Перевірка значення змінних середовища в 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після ТАБ. Пробіли дозволені. Прочитайте GNU Make document .

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" так:. Спасибі
kakoma
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.