我正在使用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。它如此刻苦,我必须少花钱。其中大部分是“在文件中包括......”
非常感谢任何和所有帮助!!
答案 0 :(得分:3)
参考GCC源diagnostic.c
,函数diagnostic_report_current_module
,第528行,在打印违规文件的名称后无条件地发生循环。你可以修改它并重建GCC,否则你运气不好。