我有一个使用 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
虽然这是记录在案的东西,但我怀疑我的问题与此依赖项包含有关。
如果您已经偶然发现了这个问题,请随时对此发表评论...
提前致谢。
编辑:
好的,玩了一会儿之后,抑制 -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/