c++ - 如何在预构建事件中解析 C++ 代码?

标签 c++ clang pre-build-event prebuild

我的 C++ 工具链中有一个预构建事件工具(用 Ruby 编写),它可以从现有的 C++ 源代码生成额外的 C++ 代码。我想用更快的生成器替换此工具,使用 clang 将是最佳选择。

有没有一种方法可以编写一个 C++ 应用程序来解析文件的 C++ 源代码,这样我就可以在 Clang 中实现这个预构建工具?我正在寻找包含如何开始的关键字或页面。非常感谢任何帮助!

最佳答案

解析 C++ 不是一件简单的事情。编译时的诡计和隐式语义使它变得异常困难。因此,我建议使用 Clang。它的开发者使得将 Clang 用作库成为可能。看看这个 guide查看 Clang 具有的不同接口(interface)。如果你想要真正的 C++ 体验,你可能想要选择 LibTooling .

我想提醒您,为了让任何 C/C++ 解析器按预期工作,它们绝对需要真正编译器使用的编译选项。如果没有包含目录或宏定义,代码将毫无意义。基本上你的构建系统应该告诉你的自定义工具如何编译每个文件。最简单的方法是使用 compilation database .它是许多基于 Clang 的工具的首选解决方案。但是,看起来您正在将其作为构建系统的一部分,因此直接从构建系统中合并您的工具和使用选项对您来说可能不是一种负担。

希望这些信息对您有所帮助!

关于c++ - 如何在预构建事件中解析 C++ 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59005173/

相关文章:

c - 包含在 libclang header 中

android - Android NDK 的最新 C++11 功能

c++ - 使用 Qt 内存管理时对 clang 静态分析的误报

iOS 预构建操作以根据 Scheme 更改 plist 值

php - 如何在 php 中创建循环模板

c++ - 识别 WinRT 的宏?

visual-studio - 在Visual Studio 2010的预生成步骤中吞下错误

visual-studio - 如何在 Visual Studio 预构建事件命令行中删除文件

c++ - 确定代码是否在特定线程中运行

c++ - 有什么方法可以用 g++ 标志将函数声明为 extern "C"吗?