2011-01-24 14 views
11

Necesito hacer un Makefile, y debe tener una regla run. Sin embargo, la ejecución requiere algunos parámetros.Parámetro para la regla en Makefile

¿Alguien tiene alguna idea de cómo puedo pasar argumentos cuando se ejecuta una regla en un Makefile? Quiero poder ejecutar la regla run con argumentos escribiendo make run foo bar.

yo probamos este, pero no funcionó:

run: 
    make compile 
    ./scripts/runTrips $1 $2 $PLACES $OUT $VERS 

Los parámetros que quiero suministrado son la primera y la segunda.

Respuesta

21

Al pasar los parámetros a un comando de fabricación, haga referencia a ellos como lo haría con otras variables de creación internas.

Si su archivo MAKE se parece a:

run: 
     script $(param1) $(param2) 

Se le puede llamar con la siguiente sintaxis:

$> make run param1=20 param2=30 

y hacer debe llamar a la secuencia de comandos como:

script 20 30 
+1

que realmente funciona, pero puedo hacer que se ejecute cuando escribo: $> hacer correr (y no param1 = ....) – amit

+4

@amit gr: No, algo como '' hacer carrera es no es posible porque 'make' quiere interpretarlo como un nombre de destino. Considere por ejemplo 'make all install': primero se procesa el objetivo" all ", luego el objetivo" install ". Todo lo que quiere que sea un tipo de parámetro se debe pasar a través de la sintaxis 'key = value' (o variables de entorno del mismo nombre). – DarkDust

2

hacerse no proporciona argumentos de paso como para scripts. Por lo general, make se usa de la siguiente manera: configura un proyecto que simplemente ejecuta 'make'. La configuración se puede realizar ejecutando el script de shell 'configure'. Este script es al que puede pasarle parámetros. Por ejemplo:

./configure param1 param2 
make run 

configure script debe analizar los parámetros y escribirlos en config.mk. config.mk debe contener lo siguiente:

PARAM1 = val1 
PARAM2 = val2 

Su Makefile debe incluir config.mk:

TOP = . 
include $(TOP)/config.mk 

run: 
    make compile 
    ./scripts/runTrips $(PARAM1) $(PARAM2) $(PLACES) $(OUT) $(VERS) 

En su script 'configure' también se puede comprobar los parámetros de corrección y realizar otras comprobaciones y cálculos.

Cuestiones relacionadas