所以,大多数时候我正在测试每个包含在给定的C / C ++代码上是否正确,我有一个带有gcc / g ++调用的makefile,带有正确的-I选项,用于搜索特定目录上的标题(比如每个程序)当我编译来源标题时。
但是,如果包含的目录不正确并且出现了一个未定义的标题(例如foo.h有#include但未找到),那么gcc / g ++只会为我foo的每个包含的内容发出一堆错误我正在编译的所有其他来源的.h标题(我已经使用-Werror -Watat-errors来使gcc / g ++停止)。
所以,我的问题很简单:如何在发现“没有这样的文件或目录”类型的第一个错误后告诉makefile停止?它继续编译源代码和来源真的很烦人,只为我已经理解的重复错误给了我数百个错误。
答案 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脚本来检查错误情况。