make/gcc神秘错误2:如何获取更多信息?

Gui*_*i13 7 c++ dependencies gcc makefile

我有这个使用Makefile编译的C++项目,有时当(我的猜测)有一些缺失的包含时,我得到一个神秘的"错误2"消息并且make过程停止.
我怀疑丢失包括因为这是我第三次包含一个不存在的头文件.

它看起来像这样:

---- Build tmp/foo.o ----
---- Build tmp/bar.o ----
---- Build tmp/toto.o ----
---- Build tmp/tata.o ----
make: *** [build_Project] Error 2
Run Code Online (Sandbox Code Playgroud)

这让我疯狂,因为即使使用详细命令(显示每个g ++调用),我也看不到任何东西.
我希望那个人抛出一些错误的信息,比如" 找不到标题X "或" 未定义引用Y ",但没有什么.

我的gcc编译选项是-O0 -Wall -Werror -Wno-write-strings -fno-rtti -fno-exceptions,如果这有帮助的话.

啊,我们使用包含依赖项的Makefile技巧:

ifneq ($(strip $(DEPENDS)),)
ifneq ($(MAKECMDGOALS),clean)
-include $(DEPENDS)
endif
endif
Run Code Online (Sandbox Code Playgroud)

(有关更多信息,请参见此处此处)

虽然这是记录的内容,但我怀疑我的问题与此依赖项包含有关.

如果你已经偶然发现了这个问题,请随时评论这个......

提前致谢.

编辑: 好的,经过一段时间的播放后,抑制-前面的内容-include $(DEPENDS)会给我一些更多信息(makefile 在丢失的包含文件停止).

make[1]: *** No rule to make target « foo.h », necessary for « tmp/bar.d ». Stop.
Run Code Online (Sandbox Code Playgroud)

现在的缺点是,当我make第一次启动时,我会收到missing bar.d file应该包含的每个依赖文件的消息(这就是为什么我们把它-放在第一位).有解决方案吗

Gui*_*i13 5

好的,我的编辑解决了这个问题:-在前面放置一个破折号include隐藏来自依赖项生成的错误消息。

以后注意:不要试图智胜Make。