c++ - Make/gcc 神秘错误 2 : how to have more information?

标签 c++ gcc dependencies makefile

我有一个使用 Makefile 编译的 C++ 项目,有时当(我的猜测)缺少一些包含时,我会收到一条神秘的“错误 2”消息,并且 make 进程停止。< br/> 我怀疑缺少包含,因为这是我包含一个不存在的头文件时第三次发生这种情况。

看起来像这样:

---- Build tmp/foo.o ----
---- Build tmp/bar.o ----
---- Build tmp/toto.o ----
---- Build tmp/tata.o ----
make: *** [build_Project] Error 2

这让我抓狂,因为即使使用冗长的命令(显示每个 g++ 调用的地方),我也看不到任何东西。
我原以为这家伙会抛出一些错误消息,例如“找不到 header X”或“对 Y 的 undefined reference ”,但什么也没有。

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

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

ifneq ($(strip $(DEPENDS)),)
ifneq ($(MAKECMDGOALS),clean)
-include $(DEPENDS)
endif
endif

(有关详细信息,请参阅 herehere)

虽然这是记录在案的东西,但我怀疑我的问题与此依赖项包含有关。

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

提前致谢。

编辑: 好的,玩了一会儿之后,抑制 -include $(DEPENDS) 前面的 - 给了我更多信息(makefile 确实停在丢失的包含文件上)。

make[1]: *** No rule to make target « foo.h », necessary for « tmp/bar.d ». Stop.

现在的缺点是,当我第一次启动 make 时,对于每个应该包含的依赖文件(这这就是我们将 - 放在首位的原因)。 有什么解决办法吗?

最佳答案

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

稍后注意:不要试图智取 Make。

关于c++ - Make/gcc 神秘错误 2 : how to have more information?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5390081/

相关文章:

xcode - 如果不是这个 CFString 废话,我可以让 GCC 4.6.2 在 Xcode 4.2 中工作

python - 用 pip 显示反向依赖?

java - 在哪里以及如何下载 Spring jar?

c++ - 一个类型是否应该只 move ,仅仅因为复制可能很昂贵?

c++ - 如何按两个值而不是仅第二个值对成对 vector 进行排序?

c++ - 在数组索引中将变量递增 N

java - NetBeans 永远运行 "Validating Tool collection on localhost"

dependencies - Zabbix 依赖项未满足

c++ - 隐藏参数 C++ 的有趣案例(参数未在 if block 中隐藏)

c++ - 继承错误后访问方法