Отключить сообщение "В файле включено" из g++

Я работаю над проектом C++ с g++. я использую #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 потому что тогда все сообщение удаляется. Можно ли просто отключить цепь включения? Man-страница g ++ не была предназначена для чтения поздно ночью, поэтому я признаю, что, возможно, что-то пропустил.

Гугл не помог. Я не мог придумать поисковый запрос, который бы выдал даже связанные результаты.

Соответствующий код из XnInterface.h, fwiw:

#ifndef __CGUT_SERVER
...non-server code...
#else
#pragma message "Compiling XnInterface for SERVER use"
...munged server code...
#endif

И, на родственной ноте, не дай Бог, я расстроил Boost. Он сгорел так сильно, что пришлось поймать его с меньшими затратами. Большая часть этого была "В файле, включенном из..."

Любая помощь очень ценится!

1 ответ

Решение

Ссылаясь на источник GCC, diagnostic.cфункция diagnostic_report_current_moduleВ строке 528 цикл выполняется безоговорочно после печати имени файла-нарушителя. Вы можете изменить это и восстановить GCC, иначе вам не повезло.

Другие вопросы по тегам