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