Условная переменная определяется в Makefile с помощью ifeq

Я пытаюсь определить переменные в 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.

Вы знаете, как делать условные определения в Makefiles?


person user255607    schedule 29.06.2011    source источник


Ответы (1)


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

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

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

person Beta    schedule 29.06.2011
comment
что делает информация? - person red888; 22.05.2019
comment
@red888: он выводит свои аргументы на стандартный вывод. Документы здесь. - person Beta; 23.05.2019