Условные переменные определяют в Makefile с помощью ifeq - PullRequest
9 голосов
/ 29 июня 2011

Я пытаюсь определить переменные в Makefile в соответствии с условиями.Поскольку ifeq можно запускать только в правилах, я добавил дополнительное правило (def_rule), к которому я обращаюсь для каждого правила.

Пример:

def_rule:
ifeq ($(TARGET), android)
    CC=arm-linux-androideabi-gcc
else
    echo "native build" 
endf

all:    def_rule tp xi_eid_chipset.o

К сожалению, вызов make all возвращает следующее:

ifeq (linux, android)
/ bin / sh: синтаксическая ошибка: слово неожиданно (ожидается ")")
make: *** [def_rule] Ошибка 2

Я не могу понять, почему.Я только что следовал примерам документации GNU Make.

Знаете ли вы, как делать условные определения в файлах Makefile?

1 Ответ

10 голосов
/ 29 июня 2011

Условные выражения могут быть вне правил:

ifeq ($(TARGET), android)
 $(info Android)
 CC=arm-linux-androideabi-gcc
else
 $(info native build)
 CC=something else
endif

(Обратите внимание, что я добавил несколько пробелов, просто чтобы было легче читать - они не нужны и не вредны.)

...