2011-01-24 12 views
11

Ho bisogno di creare un Makefile e dovrebbe avere una regola run. Tuttavia, la corsa richiede alcuni parametri.Parametro per regola nel Makefile

Qualcuno ha idea di come posso passare gli argomenti quando si esegue una regola in un Makefile? Voglio essere in grado di eseguire la regola run con argomenti digitando make run foo bar.

Ho provato questo, ma non ha funzionato:

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

I parametri che voglio forniti sono il primo e il secondo.

risposta

21

Quando si passano i parametri a un comando make, fare riferimento come se fossero altre variabili di creazione interne.

Se il makefile assomiglia:

run: 
     script $(param1) $(param2) 

Si può chiamare con la seguente sintassi:

$> make run param1=20 param2=30 

e rendere dovrebbe chiamare lo script come:

script 20 30 
+1

in realtà funziona, ma posso farlo funzionare quando scrivo: $> make gestita (e non param1 = ....) – amit

+4

@amit gr: No, qualcosa di simile a 'make run 'è non è possibile perché 'make' vuole interpretarlo come nome di destinazione. Si consideri ad esempio 'make all install': prima viene elaborato il target" all ", quindi il target" install ". Tutto ciò che si desidera essere un tipo di parametro deve essere passato tramite la sintassi 'key = value' (o variabili di ambiente con lo stesso nome). – DarkDust

2

farsi non fornisce argomenti di passaggio come per gli script. Solitamente make è usato nel modo seguente: si configura il progetto piuttosto che eseguire semplicemente 'make'. La configurazione può essere eseguita eseguendo lo script di shell 'configure'. Questo script è quello a cui è possibile passare i parametri. Ad esempio:

./configure param1 param2 
make run 

configure script deve analizzare i parametri e scriverli in config.mk. config.mk deve contenere le seguenti:

PARAM1 = val1 
PARAM2 = val2 

makefile devono comprendere config.mk:

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

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

Nello script 'configure' è anche possibile controllare i parametri per la correttezza e fare altri controlli e calcoli.