这是一个Makefile:
all:
ifeq (0,0)
echo hello
endif
注意:if
,echo
和endif
之前有一个选项卡。
给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
为什么会这样?
麻烦的是,配方中的每一行都在其自己的子外壳中运行,因此整个条件必须在一行中,否则它将不起作用。我不确定您使用的是哪个shell,但我想您已经在命令行上测试了此条件,它可以工作:
ifeq (0,0)
echo hello
endif
没有正确的外壳,我无法测试它,但我认为您也可以执行以下操作:
ifeq (0,0); echo hello; endif
如果是这样,那么它也将在makefile中起作用:
all:
ifeq (0,0); echo hello; endif
然后可以使用反斜杠将行换行:
all:
ifeq (0,0);\
echo hello;\
endif
((请注意,唯一需要的TAB位于ifeq
之前。]