如何使用PCH或PTH提高clang解析性能?

时间:2014-11-09 17:27:10

标签: c++ clang pch pth

我正在使用Clang C API进行解析和诊断。我注意到我一直在使用相同的标头包,所以我决定尝试使用PCH或PTH来提高性能。

但是我得到的诊断结果是clang_parseTranslationUnit时没有使用PCH和PTH:

  • 在编译期间未使用的参数:' - emit-pth'
  • /tmp/system/include/libcxx/iostream.pth:'链接'输入未使用
  • 在编译期间未使用的参数:' - emit-pch'
  • /tmp/system/include/libcxx/iostream.pch:'链接'输入未使用

我很惊讶在解析时没有使用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

看起来命令行参数被错误地解析了。我做错了什么?

1 个答案:

答案 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获取灵感。