Как я могу сгенерировать вывод метаданных с помощью clang, аналогичного gcc-xml? - PullRequest
2 голосов
/ 27 февраля 2012

Я обнаружил, что GCCXML больше не поддерживается (я думаю, что последняя версия от 2009 года из их хранилища CVS). Люди обычно предлагают проверить Clang, но я не смог найти исчерпывающую документацию, описывающую, как создать аналогичный результат. Не обязательно XML, но та же информация в синтаксическом (документированном, двоичном или неясном) формате. Если есть способ получить ту же информацию из последней версии gcc, это тоже хорошо.

Это для хобби проекта для динамического вызова кода C ++. Я знаю о подобных проектах (pygccxml, xrtti, openc ++), но смысл в том, чтобы сделать это ради забавы.

Ответы [ 3 ]

3 голосов
/ 27 февраля 2012

Раньше был способ напечатать xml-дамп с помощью Clang, но он был более или менее поддержан и был удален. Разработчики могут получать дампы на разных этапах, но формат для людей и нестабилен.

Рекомендацией для пользователей Clang всегда была интеграция кода:

  • Либо напрямую используйте Clang из C ++, и, например, используйте RecursiveASTVisitor реализацию
  • Или используйте libclang из C или C ++.

В отличие от gcc, clang задуман как набор библиотек для повторного использования , поэтому нет смысла пытаться написать анализатор для некоторого вывода clang: это просто намного больше ошибок - склонны к тому, чтобы просто потреблять информацию прямо у источника.

1 голос
/ 04 июня 2019

Вы можете использовать CastXML на основе Clang для генерации XML-файла.

https://github.com/CastXML/CastXML

0 голосов
/ 27 февраля 2012

Вы можете написать код плагина GCC или, что еще лучше, расширение MELT , чтобы сделать это.Вам понадобится GCC 4.6 или более поздняя версия (скоро выйдет 4.7).

Однако, расширение GCC, либо через плагин, закодированный в C, либо лучше, с расширением, закодированным в MELT (предметно-ориентированный языкдля расширения GCC) занимает некоторое время, потому что вам нужно понять и обработать большинство основных внутренних представлений GCC (Gimple и Tree-s).

Если вы хотите использовать MELT, я буду рад помочьвы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...