if-else 构造的 makefile 语法错误

if-else 构造的 makefile 语法错误

嗨,我被这个问题困扰了很长时间。我期望这个 makefile 输出“ok”。但我在调用时遇到语法错误make

ifeq (0, 0)

/bin/sh: 1: 语法错误:单词意外(需要“)”)

make: *** [默认] 错误 2

代码:

CHK = 0

default:
    ifeq ($(CHK), 0)
        echo "ok"
    else
        echo "not ok"
    endif

答案1

这些是 Makefile 指令,而不是 shell 指令,因此它们不应该带有制表符前缀:

CHK = 0

default:
ifeq ($(CHK), 0)
    echo "ok"
else
    echo "not ok"
endif

否则,Make 将它们传递给 shell,而不是自己处理它们。

相关内容