programacion make entre diferencia comando makefile

entre - makefile linux c



marca: regla de llamada de regla (4)

En un archivo MAKE, ¿puedo invocar una regla de otra regla?

Similar a:

rule1: echo "bye" rule2: date rule3: @echo "hello" rule1


Hay dos funciones avanzadas en GNU Make que pueden hacer esto, aunque solo debe usarse en circunstancias atenuantes. Este SO está mejor calificado en google.

Los requisitos previos de la regla son más recomendables, pero a veces necesita un requisito posterior.

La función GNU Make Call

La función GNU Make Eval

Básicamente, Eval le permite construir objetivos sobre la marcha, y Call permite que se cree una función como "define".


Los archivos Makefiles no son de procedimiento; "reglas" no son como funciones. Dicho esto, puede especificar que una regla es un requisito previo de otra:

rule1: @echo "Rule 1" rule2: rule1 @echo "Rule 2"

Si haces make rule2 , deberías ver:

Rule 1 Rule 2


Simplemente agregue una nueva regla con el orden que desee.

rule1: echo "bye" rule2: date rule3: @echo "hello" rule4: rule3 rule1


Use dependencias o creación recursiva para conectarse de una regla a otra.

Las dependencias se harían así (aunque el orden será diferente):

rule1: echo "bye" rule2: date rule3: rule1 @echo "hello"

La marca recursiva se haría así (aunque implica un subproceso):

rule1: echo "bye" rule2: date rule3: @echo "hello" $(MAKE) rule1

Ninguno de los dos es perfecto; de hecho, con make recursivo puede entrar en problemas significativos si construye un bucle. Probablemente también deba agregar una regla .PHONY para marcar esas reglas como sintéticas, de modo que una rule1 (etc.) perdida en el directorio no cause confusión.