我正在使用 libclangLibTooling
从 C++ 源文件中获取代码完成数据。ASTUnits 是从通过with作为生成器创建的compile_commands.json文件生成的。CMake
Ninja
在编译器调用命令中,有相对的头文件包含路径(例如-Ifoo -I../bar
)。
成功生成一个clang::ASTUnit
,我需要设置clang::FileManager::FileSystemOptions::WorkingDir
以指示 clang 如何规范化相对路径。
问题是,打电话时
clang::ASTUnit::Reparse()
我的 ASTUnits 时,这个值被丢弃,clang::DiagnosticConsumer
然后我报告丢失的头文件。
作为一种解决方法,我从头开始重新生成 ASTUnit,而不是在源更改时重新解析它们。
问题:
Q1:
这是正常行为吗?对我来说,它本质上Reparse
毫无用处。
Q2:
如何成功地重新解析具有相对标头包含路径的 ASTUnit?