Проверка значения переменных окружения в 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

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


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

Этот бит был очень полезен - также обратите внимание, что он сравнивает $ (TEST) с «TRUE» как :. Спасибо
Какома
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.