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

How can I parse C++ code in a prebuild event?

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

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

解析C++不是一件简单的事情。编译时的诡计和隐式语义使它变得异常困难。因此,我建议使用 Clang。它的开发者使得将 Clang 用作库成为可能。看看这个 guide to see different interfaces Clang has. If you want real C++ experience you might want to choose LibTooling.

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

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