Проверка значения переменных окружения в Makefile

21

У меня есть цель Makefile, в которой я должен проверить значение переменной окружения. Но я не понимаю точный синтаксис этого. Старался, но не могу найти его. Любая помощь приветствуется.

Имя переменной среды: TEST, ее значение: «TRUE»

test_target: 
    ifeq ($(TEST),"TRUE")
            echo "Do something"
    endif

Я получаю следующую ошибку:

/bin/sh: -c: line 0: syntax error near unexpected token `"TRUE","TRUE"'
/bin/sh: -c: line 0: `ifeq ("TRUE","TRUE")'
Эшвин Тумма
источник

Ответы:

26

ifeq()Директива должна быть в колонке 1, удалите все ведущие пробельные т.е.

test_target: 
ifeq ($(TEST),"TRUE")
        echo "Do something"
endif

^ без пробелов

gwillie
источник
14

Вы не должны ставить ifeqпосле TAB. Пробелы разрешены. Прочитайте документ GNU Make .

test_target: 
ifeq ($(TEST),"TRUE")
    echo "Do something"
endif

Также обратите внимание, что он сравнивается $(TEST)с "TRUE"как есть:

$ make TEST=TRUE
make: Nothing to be done for 'test_target'.

$ make TEST='"TRUE"'
echo "Do something"
Do something
yaegashi
источник
Этот бит был очень полезен - также обратите внимание, что он сравнивает $ (TEST) с «TRUE» как :. Спасибо
Какома