условно внутри цели Makefile - PullRequest
0 голосов
/ 30 января 2020

Это Makefile:

all:
    ifeq (0,0)
    echo hello
    endif

Примечание: перед if, echo и endif.

. *1007*

есть вкладка make Я получаю:

ifeq (0,0)
/bin/sh: -c: line 0: syntax error near unexpected token `0,0'
/bin/sh: -c: line 0: `ifeq (0,0)'
make: *** [Makefile:2: all] Error 1

Почему это так?

1 Ответ

0 голосов
/ 30 января 2020

Проблема в том, что каждая строка в рецепте работает в своей собственной подоболочке, поэтому все условные выражения должны быть в одной строке, иначе они не будут работать. Я не уверен, какую оболочку вы используете, но я предполагаю, что вы проверили это условие в командной строке, и оно работает:

ifeq (0,0)
echo hello
endif

Без подходящей оболочки я не могу проверить это, но Я думаю, что вы также можете сделать что-то вроде этого:

ifeq (0,0); echo hello; endif

Если так, то это также будет работать в make-файле:

all:
    ifeq (0,0); echo hello; endif

Строки могут быть перенесены с помощью обратной косой черты:

all:
    ifeq (0,0);\
   echo hello;\
   endif

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...