Предварительная обработка исходных файлов Clang Tooling

Я использую библиотеку Clang::Tooling для анализа некоторых файлов заголовков. Кажется, я не могу правильно разобрать из-за того, что clang не выполняет предварительную обработку файлов заголовков и других материалов препроцессора. Как я могу указать Clang::Tooling предварительно обрабатывать файлы перед синтаксическим анализом. Ваше здоровье. Это мой текущий код для вызова моего инструмента.

/*static*/ SAST SAST::Parse( CFile& HeaderFile, const TArray<CString>& CommandLineArgs )
{
    //Our Custom Formated Ast Data Struct
    SAST AST;

    //Parse Command-Line Args.
    clang::tooling::CommandLineArguments CommandArgs;
    for (auto& Item : CommandLineArgs)
        CommandArgs.push_back(Item.GetRaw());

    //Traverse And Collect AST
    auto SourceText = HeaderFile.GetText();
    auto SourceFileName = HeaderFile.GetFullName();
    clang::tooling::runToolOnCodeWithArgs(new CollectASTAction(&AST), SourceText.GetRawConst(), CommandArgs);

    return AST;
}

person Richmar1    schedule 02.04.2017    source источник


Ответы (1)


По-видимому, он на самом деле пытается предварительно обработать файл. Я не видел сообщений об ошибках из-за того, что окно консоли не открыто. Однако, когда я проверил метод write() класса llvm::raw_fd_ostream с точкой останова, я увидел, что записывались ошибки, такие как "FileXXX .h не найден". Поэтому он просто не смог найти файлы #include. Поэтому предварительная обработка не была выполнена/завершена. Спасибо всем. Это решает мое дневное путешествие.

person Richmar1    schedule 02.04.2017