Makefile目标内部的条件

问题描述 投票:0回答:1

这是一个Makefile:

all:
    ifeq (0,0)
    echo hello
    endif

注意:ifechoendif之前有一个选项卡。

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

为什么会这样?

makefile conditional-statements
1个回答
0
投票

麻烦的是,配方中的每一行都在其自己的子外壳中运行,因此整个条件必须在一行中,否则它将不起作用。我不确定您使用的是哪个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之前。]

© www.soinside.com 2019 - 2024. All rights reserved.