Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
makefile:命令在第一个目标之前开始_Makefile - Fatal编程技术网

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和根据文档之间缩进
$(信息---)
,有几个示例没有缩进