2016-09-07 10 views
5

Chcę zdefiniować makro C, przekazując go jako argument do make, który jest wywoływany z wiersza polecenia.W jaki sposób można podać definicję makra jako argumentu?

Tło: Chcę, aby dyrektywa #define ENABLE_OPT 1 została uwzględniona w moim kodzie źródłowym C po wybraniu określonej opcji kompilacji. Dlatego chcę to zrobić za pomocą linii poleceń make, zamiast modyfikować kod źródłowy: lub plik Makefile.

Jak można to osiągnąć? Uważam, że make -DENABLE_OPT=1 -f Makefile generuje błędy, których "E", "N" itd. Są nieważnymi argumentami.

+2

make CFLAGS = "- DENABLE_OPT = 1" – Serge

+1

Powiązane pytanie http://stackoverflow.com/questions/9052792/how-to-pass-macro-definition-od-make-command-line-arguments-d-to -c-source –

+0

Dziękuję. Mam tylko LOCAL_CFLAGS zdefiniowany w makefile, więc to nie zastąpi niczego. Brzmi dobrze! –

Odpowiedz

4

Można użyć --eval, który oceni ten ciąg jako oświadczenie makefile:

make --eval="FLAGS+= -D ENABLE_OPT=1" 

uczynić zmienne FLAGI jest następnie wykorzystywany jako argument kompilator do kompilacji kodu.

Powiązane problemy