前言:
Clang为一些需要分析代码语法,语义信息的工具提供了基础设施。包括LibClang,Clang Plugin和LibTooling。我们可以通过这些基础设施来实现一些语法检查工具,自动代码格式工具,重构工具等。本文介绍了如何去构建一个开发基于Clang的工具包的开发环境。
Step0:下载Clang工程文件
Clang是LLVM工程的一部分,所以需要首先下载LLVM的源代码。Clang和LLVM在同一个git repository中,在不同目录下。关于LLVM可通过此链接了解更多:LLVM
mkdir /clang-llvm&&cd clang-llvm
git clone https://github.com/llvm/llvm-project.gitStep1:下载安装CMake和ninja
接下来我们需要获取CMake编译系统以及Ninja编译工具。
cd clang-llvm
git clone https://github.com/martine/ninja.git
cd ninja
git checkout release
./bootstrap.py安装ninja为系统命令行工具。在linux系统中可以直接sudu cp ninja /user/bin。
如果是MacOS系统:
cd ~
mkdir bin
mv ~/clang-llvm/ninja/ninja ~/bin/
touch .bash_profile
vim .bash_profile #修改环境变量,把~/bin添加到PATH
source .bash_profile构建cmake首先去官网根据平台下载需要的包 cmake.org/download/,拷贝解压缩到~/clang-llvm/目录下
cd cmake
./bootstrap
make
sudo make installStep2:构建Clang
接下来构建Clang
cd ~/clang-llvm
cd llvm-project
mkdir build && cd build
cmake -G Ninja ../llvm -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra" -DLLVM_BUILD_TEST=ON
ninja
ninja check
ninja clang-test
sudo ninja install最后我们设置Clang为它自己的编译器
cd ~/clang-llvm/llvm-project/build
ccmake ../llvm
如上命令会产生GUI让你去配置Clang,保证CMAKE_CXX_COMPILER设置没问题,可以按'g'来创建CMake的文件.
Step3:创建Clang工程
以上步骤基本完成了Clang开发环境的搭建。以下介绍如开创建Clang工程:
cd ~/clang-llvm/llvm-project/
mkdir clang-tools-extra/LibTooling-project1
echo 'add_subdirectory(LibTooling-project1)' >> clang-tools-extra/CMakeLists.txt
vim clang-tools-extra/LibTooling-project1/CMakeLists.txtCMakeLists.txt包含如下内容:
set(LLVM_LINK_COMPONENTS support)
add_clang_executable(LibTooling-project1
xxx.cpp #工程中的main方法所在文件
)
target_link_libraries(LibTooling-project1
PRIVATE
clangTooling #此处添加需要引入的Clang库
clangBasic
clangASTMatchers
)
以上步骤完成之后,需要再次执行一次cmake -G Ninja 来生成build.ninja编译工程文件
cd ~/clang-llvm/llvm-project/build
cmake -G Ninja ../llvm -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra" -DLLVM_BUILD_TESTS=ON
ninja至此便完成了新添加工程的build工作
注意事项:
如果电脑中安装了Xcode,则新build的clang可执行文件可能会替换原Xcode的clang,导致Xcode的工程编译出错。因此,可以选择不新安装新build的clang可执行文件。
参考文献:
http://clang.llvm.org/docs/LibASTMatchersTutorial.html