我有这样的 make 文件目标foo: i = 1 @echo $(i) 当我运行这样的 make 文件时:$ make foo i = 1make: i: 未找到命令Makefile:2: 目标“foo”的配方失败make...
我已经像这样制作文件目标
foo:
i = 1
@echo $(i)
当我像这样运行 make 文件时:
$ make foo
i = 1 make:i:未找到命令 Makefile:2:目标“foo”的配方失败 make:[foo] 错误 127
但如果我在作业中没有留空格(即
i=1
然后没有错误但没有输出,i 的值没有打印
在第一种情况下,您指示 make
运行 shell 命令: i = 1
.
如果您想要一个内部变量, Makefile
则应该设置不带前导空格/制表符。
我假设您使用 GNU make
并且想要检查 Recipe Syntax (或其他类似的语法 make
):
在“规则上下文”中,以制表符作为行首字符缩进的变量定义将被视为配方的一部分,而不是 make 变量定义,并传递给 shell。