<div dir="ltr">I'd suggest to use libtooling (<a href="http://clang.llvm.org/docs/LibTooling.html">http://clang.llvm.org/docs/LibTooling.html</a>) instead of setting up your own compiler instance.</div><div class="gmail_extra">
<br><br><div class="gmail_quote">On Sat, Feb 22, 2014 at 9:43 PM, serg3091 <span dir="ltr"><<a href="mailto:serg3091@mail.ru" target="_blank">serg3091@mail.ru</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I'm a novice developer, use clang api for astdump. I use<br>
clang-check --version<br>
LLVM (<a href="http://llvm.org/" target="_blank">http://llvm.org/</a>):<br>
  LLVM version 3.4<br>
<br>
  Optimized build.<br>
  Built Jul 31 2013 (18:59:40).<br>
  Default target: x86_64-pc-linux-gnu<br>
  Host CPU: core-avx-i<br>
<br>
but as I can not get through ast.<br>
here is my code,<br>
<br>
#include <QCoreApplication><br>
#include <vector><br>
#include <iostream><br>
#include <QDebug><br>
#include <clang/Basic/Diagnostic.h><br>
#include <clang/Basic/DiagnosticOptions.h><br>
#include <clang/Frontend/CompilerInstance.h><br>
#include <clang/Frontend/CompilerInvocation.h><br>
#include <clang/Frontend/Utils.h><br>
#include <clang/Frontend/ASTUnit.h><br>
#include <clang/Frontend/TextDiagnosticBuffer.h><br>
#include <clang/Frontend/VerifyDiagnosticConsumer.h><br>
#include <clang/Frontend/FrontendActions.h><br>
<br>
<br>
using namespace clang ;<br>
using namespace llvm ;<br>
<br>
int main(int argc, char *argv[])<br>
{<br>
    QCoreApplication a(argc, argv);<br>
    DiagnosticOptions* diagOpts = new DiagnosticOptions();<br>
        CodeGenOptions* codeGenOpts = new CodeGenOptions();<br>
        CompilerInstance compiler;<br>
        compiler.createDiagnostics(<br>
            diagOpts,<br>
            false,<br>
            false,<br>
            codeGenOpts<br>
        ); // to stdout<br>
        assert(compiler.hasDiagnostics());<br>
        const char *args[] =<br>
        {<br>
            "-cc1", // вызов LLVM Clang<br>
            "a.cpp" // входной файл<br>
        };<br>
<br>
        clang::CompilerInvocation::CreateFromArgs(<br>
        compiler.getInvocation(),<br>
            args,<br>
            args + 2,<br>
            compiler.getDiagnostics());<br>
            assert(0 == compiler.getDiagnostics().getErrorsAsFatal());<br>
            FrontendAction *action = new ASTDumpAction;<br>
            if(compiler.ExecuteAction(action)){<br>
                std::cout << "ok:";<br>
            }else{<br>
                std::cout << "error:";<br>
            }<br>
        std::cout << "8" << std::endl;<br>
            assert(0 == compiler.getDiagnostics().getNumWarnings());<br>
            assert(actionSuccessful);<br>
    return a.exec();<br>
}<br>
<br>
please do not abuse for the code and my English<br>
<br>
<br>
<br>
--<br>
View this message in context: <a href="http://clang-developers.42468.n3.nabble.com/clang-api-in-qt5-2-tp4038002.html" target="_blank">http://clang-developers.42468.n3.nabble.com/clang-api-in-qt5-2-tp4038002.html</a><br>
Sent from the Clang Developers mailing list archive at Nabble.com.<br>
<br>
_______________________________________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@cs.uiuc.edu">cfe-dev@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev</a><br>
</blockquote></div><br></div>