makefile:命令在第一个目标之前开始
我有一个如下的规则只是为了测试makefile:命令在第一个目标之前开始,makefile,Makefile,我有一个如下的规则只是为了测试 test: ifeq (1,1) $(info --) endif echo kkk 当我运行maketest时,它显示 makefile:41:**命令在第一个目标之前开始。停下来 怎么了 编辑 根据Florian Weimer的说法,我们应该缩进$(info--)行。但是如果我写 test: ifeq (1,1) $(info --) endif echo kkk test2: ifeq (1,1) $(info --) endif
test:
ifeq (1,1)
$(info --)
endif
echo kkk
当我运行maketest
时,它显示
makefile:41:**命令在第一个目标之前开始。停下来
怎么了
编辑
根据Florian Weimer的说法,我们应该缩进$(info--)
行。但是如果我写
test:
ifeq (1,1)
$(info --)
endif
echo kkk
test2:
ifeq (1,1)
$(info --)
endif
echo kkk
然后进行测试
会抱怨
makefile:11:**命令在第一个目标之前开始。停下来
那么make不总是扫描整个makefile吗?规则测试完成后,它似乎不会停止您需要用制表符缩进
$(信息--)
行,这样它就不会终止配方,如下所示:
test:
ifeq (1,1)
$(info --)
endif
echo kkk
(显然,您需要在此处使用选项卡。)
编辑条件块的make文档始终在配方内使用制表符缩进,在配方外使用空格或无缩进。这就是为什么两种风格都有
如果我缩进两行
$(info--)
的话,完整的示例对我来说很有用。这有帮助吗@是的,我看到了这个链接。但我仍然不知道为什么我的规则是错误的?也许?@jwdonahue我知道空格和制表符之间的区别。所以我把它们区分开来。但是为什么echo kkk不正确呢?它由制表符缩进,并由shellHi,Florian Weimer解释。如果我缩进$(信息)行。然后在测试规则之后进行错误投诉。这让我很困惑,为什么make在测试后不停止?make是否总是扫描整个make文件?请编辑您的问题,以包含显示问题的最小示例以及错误消息。您好,@Florian Weimer。非常感谢你。我做了一个编辑。但我还是很困惑。因为人们说,行以tab开头是shell。为什么我应该在IFEQ和根据文档之间缩进$(信息---)
,有几个示例没有缩进