在C ++项目中将clang用作库
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在C ++项目中将clang用作库相关的知识,希望对你有一定的参考价值。
我正在尝试使用clang作为库,但是我不确定如何链接Makefile中的文件。
从https://clang.llvm.org/docs/RAVFrontendAction.html中试用ASTVisitor代码
这里是我的Makefile供参考:
CC=g++
Includes= /usr/lib/llvm-6.0/include/
Libs= /usr/lib/llvm-6.0/lib/
CLANGLIBS=-lclangTooling -lclangFrontendTool -lclangFrontend -lclangDriver -lclangSerialization -lclangCodeGen -lclangParse -lclangSema -lclangStaticAnalyzerFrontend -lclangStaticAnalyzerCheckers -lclangStaticAnalyzerCore -lclangAnalysis -lclangARCMigrate -lclangRewrite -lclangRewriteFrontend -lclangEdit -lclangAST -lclangLex -lclangBasic -lclang
run:
LD_PRELOAD=../../llvm-project/build/lib/libclang.so ./clang_parser.out
all: clang_parser.cpp
$(CC) -I$(Includes) -L$(Libs) clang_parser.cpp -o a.out $(CLANGLIBS)
clean:
rm clang_parser.out
我已将clang安装为库,即已完成sudo apt-get install libclang-dev
我收到以下错误:
clang_parser.cpp:13:10: fatal error: clang/Frontend/FrontendActions.h: No such file or directory
#include <clang/Frontend/FrontendActions.h>
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
Makefile:10: recipe for target 'all' failed
make: *** [all] Error 1
也欢迎在C / C ++项目中使用apt安装的软件包的任何最佳实践。
答案
已安装许多软件包以确保:
sudo apt-get install libclang-dev llvm clang clang-tools
这是供参考的编译命令(它包括可能使用的所有库):
clang++ `llvm-config --cxxflags --ldflags` clang_parser.cpp $(CLANGLIBS2) `llvm-config --libs --system-libs` -g -o tool
其中
CLANGLIBS2=-lclangTooling -lclangFrontendTool -lclangFrontend -lclangDriver -lclangSerialization -lclangCodeGen -lclangParse -lclangSema -lclangStaticAnalyzerFrontend -lclangStaticAnalyzerCheckers -lclangStaticAnalyzerCore -lclangAnalysis -lclangARCMigrate -lclangRewrite -lclangRewriteFrontend -lclangEdit -lclangAST -lclangASTMatchers -lclangLex -lclangBasic -lclang
通过执行以下操作,将/usr/lib/llvm-6.0/lib中的所有.so,.a文件设置为LD_LIBRARY_PATH:
export LD_LIBRARY_PATH=/usr/lib/llvm-6.0/lib
ldconfig
以上是关于在C ++项目中将clang用作库的主要内容,如果未能解决你的问题,请参考以下文章