禁用";包含在文件中的“文件”;g++;消息 我正在使用G++做C++项目。我正在使用#pragma消息打印各种诊断消息(正在编译类的哪些部分等)。起初它是有用的,但随着包含链的增长,它失去了控制
当我编译我的任何对象时,我保证得到至少3条类似于以下内容的消息:禁用";包含在文件中的“文件”;g++;消息 我正在使用G++做C++项目。我正在使用#pragma消息打印各种诊断消息(正在编译类的哪些部分等)。起初它是有用的,但随着包含链的增长,它失去了控制,c++,c++11,pragma,g++4.8,C++,C++11,Pragma,G++4.8,当我编译我的任何对象时,我保证得到至少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: #prag
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。它吐得太厉害了,我不得不少吐一点。大部分是“在文件中包括从…”
非常感谢您的任何帮助 参考GCC源代码,
diagnostic.c
,functiondiagnostic\u report\u current\u module
,第528行,打印有问题文件的名称后,循环无条件发生。你可以修改它并重建GCC,否则你就倒霉了。我最终为GCC编写了一个补丁,但我的服务器在编译过程中自动启动了,所以我不知道它是否有效。@Chris听起来像是一个史诗般的任务。