【问题标题】:Clang Tooling Preprocess Source FilesClang 工具预处理源文件
【发布时间】:2017-04-02 04:06:39
【问题描述】:

我正在使用 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;
}

【问题讨论】:

    标签: c++ parsing clang libclang


    【解决方案1】:

    显然它实际上是在尝试预处理文件。由于没有打开控制台窗口,我看不到任何报告的错误。但是,当我用断点检查 llvm::raw_fd_ostream 类的 write() 方法时,我可以看到正在写入错误,例如 "FileXXX .h 找不到”。所以它根本找不到 #include 文件。这就是没有执行/完成预处理的原因。谢谢大家。这解决了我一天的旅程。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-05-10
      • 1970-01-01
      • 1970-01-01
      • 2011-09-22
      • 1970-01-01
      • 2010-11-11
      • 1970-01-01
      相关资源
      最近更新 更多