如何用clang / LLVM库编译C ++代码?

我是Linux的新手,并通过一些clang的教程。 但是,我发现很难编译一个简单的文件。 所以,这是代码的一部分:

#include <cstdio> #include <string> #include <iostream> #include <sstream> #include <map> #include <utility> #include "clang/AST/ASTConsumer.h" #include "clang/AST/RecursiveASTVisitor.h" #include "clang/Basic/Diagnostic.h" #include "clang/Basic/FileManager.h" #include "clang/Basic/SourceManager.h" #include "clang/Basic/TargetOptions.h" #include "clang/Basic/TargetInfo.h" #include "clang/Frontend/CompilerInstance.h" #include "clang/Lex/Preprocessor.h" #include "clang/Parse/ParseAST.h" #include "clang/Rewrite/Core/Rewriter.h" #include "clang/Rewrite/Frontend/Rewriters.h" #include "llvm/Support/Host.h" #include "llvm/Support/raw_ostream.h" using namespace clang; using namespace std; 

当我试图编译简单的代码(让我们说PrintFunctions.cpp)与以下命令:

 clang++ -o PrintFunctions PrintFunctions.cpp 

我得到的错误:

致命错误:找不到“clang / AST / ASTConsumer.h”文件

那么,我已经检查过,我的LLVM和clang已经安装好了,文件“clang / AST / ASTConsumer.h”被find

/usr/lib/llvm-3.4/include/clang/AST

所以,我必须有一些我错过的命令。 我不知道该怎么做…我已经在线阅读了一些教程,其中大部分都使用了makefile,而且看起来很复杂。 那么,如何编译呢? 如何find一个更简单的方法来编写makefile?

顺便说一下,我在Ubuntu 14.04下,而clang / LLVM版本是3.4。

通常,在你的makefile中,你应该有这样的东西:

 CXXFLAGS += `${LLVM_DIR}/bin/llvm-config --cxxflags` 

 LDFLAGS += `${LLVM_DIR}/bin/llvm-config --ldflags` LLVMLIBS = `${LLVM_DIR}/bin/llvm-config --libs` 

[编辑每个评论由托马斯]

你可能也会使用:

 LLVMLIBS += `${LLVM_DIR}/bin/llvm-config --system-libs` 

对于不属于LLVM的东西,而是LLVM依赖的东西。

[结束编辑]

然后使用这些:

 .cpp.o: ${CXX} ${CXXFLAGS} ${CXX_EXTRA} -c -o $@ $< myprog: ${OBJECTS} ${LD} ${LDFLAGS} -o $@ ${OBJECTS} ${LIBS} 

(其中${OBJECTS}是您的对象文件的列表)

LLVM_DIR当然应该设置为指向您的LLVM的安装位置,例如/usr//usr/local – 运行which clang++来查看您的clang的安装位置。

这里是我的Pascal编译器的Makefile ,使用LLVM作为后端。