编译 Clang
CSA (Clang Static Analyzer) 是 clang 的一部分。建议使用自行编译的 clang ,源码在 llvm/llvm-project (github.com) 上获取。
编译 clang 前首先要生成 clang 的编译脚本。在生成 clang 的编译脚本时通常需要设置如下几个参数:
-
-S
源代码路径 -
-B
生成的编译脚本放置的目录 -
-G
编译工具的选择,对应生成不同工具需要的编译脚本,如 ninja ,默认是 make 和 cmake -
-DLLVM_ENABLE_PROJECTS
说明要编译的子项目,如 clang 、 clang-tools-extra 等,默认是 all -
-DCMAKE_BUILD_TYPE
说明编译的类型,如 Debug 、 Release 等,默认是 Debug -
-CMAKE_INSTALL_PREFIX
类似于 configure 脚本的 –prefix ,用于配合 INSTALL 指令( make install )使用,指定安装路径 -
-DCMAKE_CXX_COMPILER
和DCMAKE_C_COMPILER
指定使用的编译器,如 clang 或 gcc
使用 cmake 的例子1:
cd llvm-project
mkdir build
cd build
cmake -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra" -DCMAKE_BUILD_TYPE=Release -G "Unix Makefiles" ../llvm
cmake -DLLVM_ENABLE_PROJECTS=clang -G "Unix Makefiles" ../llvm
make
使用 cmake 的例子2:
git clone --depth 1 --branch llvmorg-12.0.1 https://github.com/llvm/llvm-project.git
cmake -S llvm-project/llvm -B llvm-project/build \
-DCMAKE_BUILD_TYPE=Release \
-DLLVM_ENABLE_PROJECTS=all \
-DCMAKE_CXX_COMPILER=clang++ \
-DCMAKE_C_COMPILER=clang
cmake --build llvm-project/build -j8
cmake --install llvm-project/build --prefix /usr/local # or somewhere else
使用 ninja 的例子:
cd llvm-project
mkdir build
cd build
cmake -S ../llvm -B buil