2012-05-22 19 views
10

mio makefile ha linea come questache definiscono i valori di default in makefile

CFLAGS = -c -g -D OPT1 -D OPT2 

voglio passare questo argomento attraverso la linea di comando come questo

make ARG1= OPT1 ARG2 =OPT2  

Se io non passare questi argomenti attraverso la linea di comando che voglio makefile da usare prende i valori di default definiti nel makefile. Come lo faccio ?

+1

possibile duplicato di [Passaggio di ulteriori variabili dalla riga di comando per effettuare] (http://stackoverflow.com/questions/2826029/passing-additional-variables-from-command-line-to-make) –

risposta

18

Basta fare qualcosa di simile nel makefile:

OPT1 = MY_OPT_1 # defaults 
OPT2 = MY_OPT_2 

CFLAGS = -c -g -D $(OPT1) -D $(OPT2) 

Poi sulla riga di comando:

$ make -e OPT1=SOME_OTHER_OPT1 OPT2=SOME_OTHER_OPT2 

Quando si specifica falues ​​per OPT1 e/o OPT2 sulla riga di comando queste annulleranno i valori predefiniti nel makefile.

Nota che, probabilmente, si desidera l'opzione -e con make nella maggior parte dei casi per forzare tutto per essere ri-costruita con i nuovi OPT1, OPT2 valori.

+0

grazie Cosa succede se vuoi che OPT2 sia nullo di default? – user1377944

+0

Ingannevole, perché non puoi avere un '-D' con niente dopo di esso. –

+0

Usa #ifdef OPT2 #endif nel tuo file c/cpp –

Problemi correlati