我有一个像下面的规则只是为了测试
test:
ifeq (1,1)
$(info --)
endif
echo kkk
当我运行make test
时,它会显示
makefile:41:***命令在第一个目标之前开始。停止。
有什么问题?
修改
根据Florian Weimer的说法,我们应该缩进$(info --)
行。但如果我写
test:
ifeq (1,1)
$(info --)
endif
echo kkk
test2:
ifeq (1,1)
$(info --)
endif
echo kkk
然后make test
会抱怨
makefile:11:***命令在第一个目标之前开始。停止。
所以不要总是扫描整个makefile?似乎在规则测试完成后它不会停止
答案 0 :(得分:1)
您需要对$(info --)
行进行制表符缩进,以便它不会终止配方,如下所示:
test:
ifeq (1,1)
$(info --)
endif
echo kkk
(显然,你需要在这里使用标签。)
编辑条件块的make文档始终在配方中使用制表符缩进,并在配方之外使用空格或缩进。这就是为什么有两种风格。
如果我缩进$(info --)
行,那么完整的示例适用于我。