Я использую Clang C API для анализа и получения диагностики. Я заметил, что все время использую один и тот же набор заголовков, поэтому я решил попробовать использовать PCH или PTH для повышения производительности.
Но я получаю диагностику, что ни PCH, ни PTH не использовались в то время как clang_parseTranslationUnit
:
Я удивлен, что PCH и PTH не использовались при синтаксическом анализе, так как я могу использовать PCH или PTH или любой другой подход для повышения производительности синтаксического анализа?
PS.
PTH был создан с использованием clang++ -x c++-header iostream -emit-pth -o iostream.pth
PCH аналогичным образом
Обновление 1:
я обнаружил Пример использования PCH:
// 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
Похоже, что аргументы командной строки были проанализированы неправильно .. Что я делаю не так?
Нужно включить -Xclang
перед каждым аргументом:
char *args[] = { "-Xclang", "-include-pch", "-Xclang", "IndexTest.pch" };
Увидеть https://reviews.llvm.org/diffusion/L/browse/cfe/trunk/test/Index/c-index-pch.c для вдохновения.