Libclang - это интерфейс C для семейства компиляторов Clang. Он обеспечивает относительно небольшой API, который подвергает средства для анализа исходного кода в абстрактное синтаксисное дерево (AST), загружая уже отмеченные AST, пересекающие AST, ассоциируя местоположение физических источников с элементами в рамках AST и других объектов, которые поддерживают инструменты разработки на основе кланг.
Этот интерфейс C для Clang никогда не предоставит все информационное представление, хранящееся в C ++ AST Clang, и не должно: Цель состоит в том, чтобы поддерживать API, который относительно стабилен от одного выпуска к другому, предоставляя только основные функциональные возможности, необходимые для поддержки инструментов разработки.
Вы можете найти статью о Libclang для Delphi в моем блоге.
Neslib.clang использует libclang двумя способами:
Устройство Neslib.Clang.Api поставщики перевода заголовка для Libclang версии 14.0. Вы можете использовать эти переводы заголовка, поскольку вы использовали Libclang с языка C. Документацию для C API можно найти здесь: https://clang.llvm.org/doxygen/index.html
Единица Neslib.Clang обеспечивает более высокую абстракцию API Libclang. Он обеспечивает тонкую модель класса поверх API Libclang, что облегчает использование от Delphi. Кроме того, он обеспечивает автоматическое управление памятью, поэтому вам не нужно беспокоиться о том, какие ресурсы для выпуска и когда.
Документация для блока Neslib.Clang можно найти в файле Neslib.clang.chm или онлайн по адресу https://neslib.github.io/neslib.clang.
Поскольку Clang DLL очень большие (64+ МБ), Neslib.clang только поставляется с 32-разрядными версиями этих DLL. Если вы предпочитаете использовать 64-битную версию, вам придется загрузить 64-битную версию LLVM со страницы загрузки LLVM (обязательно выберите версию, соответствующую этой версии Neslib.clang).
После установки вы найдете libclang.dll в каталоге бин. Вам также необходимо скопировать DLL -DLL -файл VC Runtime ( msvcp140.dll и vcruntime140.dll ) из этого каталога.
Neslib.Clang лицензирован по упрощенной лицензии BSD. См. License.txt для деталей.