Прочитайте сводку опций GCC .Затем прочитайте о параметрах препроцессора GCC .Читайте также о скомпилированных заголовках (концептуально, это всего лишь некоторый кеш).У них есть ограничения, которые я объяснил здесь .
Почему вы не можете использовать -H
и фильтровать, возможно, по какому-либо сценарию, используя grep
или awk
, его вывод?Вы также можете использовать опцию -M*
.
В противном случае вы можете написать свой собственный плагин GCC .Он будет использовать событие PLUGIN_INCLUDE_FILE
.
Мое мнение таково, что написание плагина только для этой информации излишне.
Наконец, GCC является свободным программным обеспечением .Вам разрешено получить его исходный код и улучшить его (я не уверен, что стоит попытаться понять внутреннюю часть GCC только для ваших целей).Вы, вероятно, должны опубликовать свои улучшения в соответствии с GPLv3 + (но это вопрос этики, права или лицензирования с открытым исходным кодом, поэтому не по теме здесь; имейте в виду исключение библиотеки времени выполнения GCC ).Вы могли бы заплатить некоторому эксперту GCC, чтобы сделать работу за вас.
Future C ++ 20 (или позже) может иметь модулей (см. Также this и читать p1103r0 ).Конечно, вам понадобится более новый GCC, чем старый GCC 7 .Возможно, вам придется подождать GCC 10 или более поздней версии.
Может быть, вам стоит взглянуть на другие языки, например Rust , Go или Ocaml .