我正在使用Clang C API进行解析和诊断。我注意到我一直在使用相同的标头包,所以我决定尝试使用PCH或PTH来提高性能。
但是我得到的诊断结果是clang_parseTranslationUnit
时没有使用PCH和PTH:
我很惊讶在解析时没有使用PCH和PTH,那么我如何使用PCH或PTH或任何其他方法来提高解析性能呢?
PS。
使用clang++ -x c++-header iostream -emit-pth -o iostream.pth
,PCH以类似的方式生成PTH
更新1:
我找到了PCH usage example:
// This will load all the symbols from 'IndexTest.c', excluding symbols
// from 'IndexTest.pch'.
char *args[] = { "-Xclang", "-include-pch=IndexTest.pch" };
TU = clang_createTranslationUnitFromSourceFile(Idx, "IndexTest.c", 2, args, 0, 0);
问题是现在我得到另一个诊断警告:
'-pch=/system/include/libcxx/iostream.pch' file not found
看起来命令行参数被错误地解析了。我做错了什么?
答案 0 :(得分:0)
需要在每个参数之前包含-Xclang
:
char *args[] = { "-Xclang", "-include-pch", "-Xclang", "IndexTest.pch" };
请参阅https://reviews.llvm.org/diffusion/L/browse/cfe/trunk/test/Index/c-index-pch.c获取灵感。