我正在使用 g++ 开发一个 C++ 项目。我正在使用#pragma
消息来打印各种诊断消息(正在编译类的哪些部分等)。起初它很有用,但随着包含链开始增长,它失控了。
当我编译我的任何对象时,我保证会收到至少 3 条类似于以下内容的消息:
In file included from cgCore.h:10:0
from cgutCore.h:3
from cgutSrvWrapper.h:11
from cgutSrv1.h:5
from cgutSrv1.cpp:9
XnInterface.h:14:17: note: #pragma message: Compiling XnInterface for SERVER use
#pragma message "Compiling XnInterface for SERVER use"
^
当我进行完整构建时,我会得到数百个。我想要打印实际的消息 (XnInterface.h:14...),而不是其余的。我真的不在乎它是从哪里包含在这种情况下的,这使得实际的警告很难被发现。
我发现我可以用 禁用最后两行-fno-diagnostics-show-carat
,但找不到不打印包含链的选项。
我不想将它们作为系统标头包含在内,-i/INCLUDE
因为这样会删除整个消息。是否可以只禁用包含链?g++ 手册页不是为深夜阅读而设计的,所以我承认我可能遗漏了一些东西。
谷歌没有帮助。我想不出一个可以返回甚至相关结果的搜索查询。
来自 XnInterface.h 的相关代码,fwiw:
#ifndef __CGUT_SERVER
...non-server code...
#else
#pragma message "Compiling XnInterface for SERVER use"
...munged server code...
#endif
而且,在相关的说明中,上帝保佑我让 Boost 不高兴。它吐得太厉害了,我不得不用更少的钱来抓住它。其中大部分是“在文件中包含...”
非常感谢任何和所有帮助!