<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 14 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:SimSun;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:SimSun;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:SimSun;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        text-align:justify;
        text-justify:inter-ideograph;
        font-size:10.5pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 90.0pt 72.0pt 90.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="ZH-CN" link="blue" vlink="purple" style="text-justify-trim:punctuation">
<div class="WordSection1">
<p class="MsoNormal" align="left" style="text-align:left"><span lang="EN-US">hi  all,<o:p></o:p></span></p>
<p class="MsoNormal" align="left" style="text-align:left"><span lang="EN-US">who can help me resolve my issue. m</span><span lang="EN-US" style="font-family:"Tahoma","sans-serif"">aybe it is easy to you.but it blocked me for long time.<o:p></o:p></span></p>
<p class="MsoNormal" align="left" style="text-align:left"><span lang="EN-US" style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">I have install llvm from source code.and set eviroment path:<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">export LLVM_DIR=/opt/llvm/llvm-3.7.0.src/install/share/llvm/cmake<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">export PATH=$PATH:/opt/llvm/llvm-3.7.0.src/install/bin<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">export C_INCLUDE_PATH=/opt/llvm/llvm-3.7.0.src/install/lib/clang/3.7.0/include<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">export CPLUS_INCLUDE_PATH=/opt/llvm/llvm-3.7.0.src/install/lib/clang/3.7.0/include<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">export LIBRARY_PATH=/opt/llvm/llvm-3.7.0.src/install/lib/clang/3.7.0/lib/linux<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">export LD_LIBRARY_PATH=/opt/llvm/llvm-3.7.0.src/install/lib/clang/3.7.0/lib/linux<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">But when I make some example ,always report below erro:<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">linux-c0ik:/opt/llvmwork/example3 # make<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">/opt/llvm/llvm-3.7.0.src/install/bin/clang++ -I/opt/llvm/llvm-3.7.0.src/install/include  -fPIC -fvisibility-inlines-hidden -Wall -W -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic
 -Wno-long-long -Wno-maybe-uninitialized -Wno-comment -std=c++11 -ffunction-sections -fdata-sections -O3 -DNDEBUG -fno-exceptions -fno-rtti  -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -fno-rtti   -c -o main.o main.cpp<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">warning: unknown warning option '-Wno-maybe-uninitialized'; did you mean '-Wno-uninitialized'? [-Wunknown-warning-option]<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">In file included from main.cpp:2:<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">In file included from /opt/llvm/llvm-3.7.0.src/install/include/clang/Basic/VirtualFileSystem.h:16:<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">In file included from /opt/llvm/llvm-3.7.0.src/install/include/clang/Basic/LLVM.h:22:<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">In file included from /opt/llvm/llvm-3.7.0.src/install/include/llvm/Support/Casting.h:19:<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">In file included from /opt/llvm/llvm-3.7.0.src/install/include/llvm/Support/type_traits.h:17:<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">/usr/lib/gcc/i586-suse-linux/4.9/../../../../include/c++/4.9/type_traits:1371:66: error: incomplete type 'clang::Decl' used in type trait expression<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">    : public integral_constant<bool, __is_base_of(_Base, _Derived)><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">                                                                 ^<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">/opt/llvm/llvm-3.7.0.src/install/include/llvm/Support/Casting.h:63:44: note: in instantiation of template class 'std::is_base_of<clang::VarDecl, clang::Decl>'<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">      requested here<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">    To, From, typename std::enable_if<std::is_base_of<To, From>::value>::type> {<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">                                           ^<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">/opt/llvm/llvm-3.7.0.src/install/include/llvm/Support/Casting.h:96:12: note: during template argument deduction for class template partial specialization<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">      'isa_impl<type-parameter-0-0, type-parameter-0-1, typename enable_if<std::is_base_of<To, From>::value, void>::type>'<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">      [with To = clang::VarDecl, From = clang::Decl]<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">    return isa_impl<To, From>::doit(*Val);<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">           ^<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">/opt/llvm/llvm-3.7.0.src/install/include/llvm/Support/Casting.h:122:36: note: in instantiation of member function 'llvm::isa_impl_cl<clang::VarDecl, const clang::Decl<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">      *>::doit' requested here<o:p></o:p></span></p>
<p class="MsoNormal" style="text-indent:21.6pt"><span lang="EN-US">return isa_impl_cl<To,FromTy>::doit(Val);<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">                                   ^<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">My example src file:<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">#include "clang/Basic/VirtualFileSystem.h"<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">#include "clang/Basic/TargetOptions.h" <o:p>
</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">#include "clang/Basic/TargetInfo.h"<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">#include "clang/Basic/LangOptions.h"<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">#include "clang/Basic/SourceLocation.h"<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">#include "clang/Basic/SourceManager.h"<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">#include "clang/AST/DeclGroup.h"<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">#include "clang/AST/ASTConsumer.h"<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">#include "clang/Parse/ParseAST.h"<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">#include "clang/Frontend/CompilerInstance.h"<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">//using namespace clang;<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">class CustomASTConsumer : public clang::ASTConsumer {<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">public:<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">CustomASTConsumer () : ASTConsumer() { }<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">virtual ~ CustomASTConsumer () { }<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">virtual bool HandleTopLevelDecl(clang::DeclGroupRef decls)<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">{<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">int i=0;<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">clang::DeclGroupRef::iterator it;<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">for( it = decls.begin(); it != decls.end(); it++)<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">{<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">clang::VarDecl *vd = llvm::dyn_cast<clang::VarDecl>(*it);<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">if(vd)<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">    i++;<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">/*std::cout << vd->getDeclName().getAsString() << std::endl;;*/<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">}<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">return true;<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">}<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">};<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">int main() {<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">clang::CompilerInstance ci;<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">ci.createDiagnostics();<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">std::shared_ptr<clang::TargetOptions> to(new clang::TargetOptions())/*=new clang::TargetOptions()*/;<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">/*clang::TargetOptions to;*/<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">to->Triple = llvm::sys::getDefaultTargetTriple();<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">clang::TargetInfo *tin ;<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">//clang::TargetInfo.getTargetOpts();<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">   tin=clang::TargetInfo::CreateTargetInfo(ci.getDiagnostics(),to);<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">ci.setTarget(tin);<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">ci.createFileManager();<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">ci.createSourceManager(ci.getFileManager());<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">ci.createPreprocessor(clang::TU_Complete);<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">ci.createASTContext();<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">std::unique_ptr<clang::ASTConsumer> astConsumer(new clang::ASTConsumer()/* CustomASTConsumer ()*/);<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">/*CustomASTConsumer *astConsumer = new CustomASTConsumer ();*/<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">ci.setASTConsumer(std::move(astConsumer));<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">const clang::FileEntry *file = ci.getFileManager().getFile("hello.c");<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">ci.getSourceManager().createFileID(file,clang::SourceLocation(),clang::SrcMgr::C_User);<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">/*ci.getSourceManager().createMainFileID(file);*/<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">ci.getDiagnosticClient().BeginSourceFile(<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">ci.getLangOpts(), &ci.getPreprocessor());<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">/*clang::ParseAST(ci.getPreprocessor(), astConsumer, ci.getASTContext());*/<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">clang::ParseAST(ci.getSema(),ci.getFrontendOpts().ShowStats, ci.getFrontendOpts().SkipFunctionBodies);<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">ci.getDiagnosticClient().EndSourceFile();<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">return 0;<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">}<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">My example makefile:<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">RTTIFLAG := -fno-rtti<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">CXXFLAGS := $(shell llvm-config --cxxflags) $(RTTIFLAG)<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">LLVMLDFLAGS := $(shell llvm-config --ldflags --libs)<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">#DDD := $(shell echo $(LLVMLDFLAGS))<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">SOURCES = main.cpp<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">OBJECTS = $(SOURCES:.cpp=.o)<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">EXES = $(OBJECTS:.o=)<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">CLANGLIBS = \<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">-L /opt/llvm/llvm-3.7.0.src/install \<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">-lclangFrontend \<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">-lclangParse \<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">-lclangSema \<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">-lclangAnalysis \<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">-lclangAST \<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">-lclangLex \<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">-lclangBasic \<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">-lclangDriver \<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">-lclangSerialization \<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">-lLLVMMC \<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">-lLLVMSupport \<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">all: $(OBJECTS) $(EXES)<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">%: %.o<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">$(CXX) -o $@ $< $(CLANGLIBS) $(LLVMLDFLAGS)<o:p></o:p></span></p>
</div>
</body>
</html>