如何在“没有这样的文件或目录”错误后停止make(在makefile中)?

时间:2012-10-22 09:21:59

标签: c gcc makefile

所以,大多数时候我正在测试每个包含在给定的C / C ++代码上是否正确,我有一个带有gcc / g ++调用的makefile,带有正确的-I选项,用于搜索特定目录上的标题(比如每个程序)当我编译来源标题时。

但是,如果包含的目录不正确并且出现了一个未定义的标题(例如foo.h有#include但未找到),那么gcc / g ++只会为我foo的每个包含的内容发出一堆错误我正在编译的所有其他来源的.h标题(我已经使用-Werror -Watat-errors来使gcc / g ++停止)。

所以,我的问题很简单:如何在发现“没有这样的文件或目录”类型的第一个错误后告诉makefile停止?它继续编译源代码和来源真的很烦人,只为我已经理解的重复错误给了我数百个错误。

3 个答案:

答案 0 :(得分:3)

它可能会继续,因为你告诉它。请参阅GNU make的以下两个选项:

-k, --keep-going          Keep going when some targets can't be made.
-S, --no-keep-going, --stop
                          Turns off -k.

答案 1 :(得分:2)

将头文件放入变量并将该变量用作依赖项。在指定的标头存在之前,以下代码段不会构建任何内容。

HEADERS=test.h other.h /usr/include/special.h

all: $(HEADERS) $(BINPROGS)

[... all other rules go here as usual ...]

*.h:
    echo found $@

“.h:”只是打印出在任何建筑物开始之前找到的每个标题。如果找不到标题,makefile本身就会停止(在尝试编译任何内容之前 会停止)。

我相信那就是你想要的?

答案 2 :(得分:0)

在运行make脚本之前,您可以编写一个shell脚本来检查错误情况。