Отключить & quot; В файле, включенном из & quot; 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. Он сгорел так сильно, что мне пришлось поймать его с меньшими затратами. Большая часть этого была «В файле, включенном из …»

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

2

Решение

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

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]