[英]How to build the latest clang-tidy?
我试图从源代码构建 clang-tidy,但它抱怨未定义的 CMake 命令:
CMake Error at clang-apply-replacements/CMakeLists.txt:5 (add_clang_library):
Unknown CMake command "add_clang_library".
CMake Warning (dev) in CMakeLists.txt:
No cmake_minimum_required command is present. A line of code such as
cmake_minimum_required(VERSION 3.9)
should be added at the top of the file. The version specified may be lower
if you wish to support older CMake versions for this project. For more
information run "cmake --help-policy CMP0000".
This warning is for project developers. Use -Wno-dev to suppress it.
-- Configuring incomplete, errors occurred!
如何构建 clang-tidy 或者如何在 macOS 上安装最新版本?
最新步骤:
git clone https://github.com/llvm/llvm-project.git
cd llvm-project
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DLLVM_ENABLE_PROJECTS="clang-tools-extra" ../llvm
make install-clang-tidy
参考、忍者和其他详细信息: 我自己的博客文章。
编辑:此答案已过时——LLVM 项目已移至https://github.com/llvm/llvm-project上的单个 git 存储库。 有关更新的说明,请参阅下面的答案。
clang-tidy 旨在构建在llvm/clang 的检出中,并且依赖于 llvm 项目中的 CMake 宏。 您应该检查 llvm 存储库,然后是llvm/tools/clang
,然后是llvm/tools/clang/tools/extra
的 clang-tools-extra 存储库。 然后你可以在顶级目录上运行 CMake,并且make clang-tidy
应该可以工作。
如果您对自己构建它不感兴趣,看起来 LLVM 的 Homebrew 公式还包括额外的工具: https : //github.com/Homebrew/homebrew-core/blob/382d3defb5bc48ce2dccd17261be70c4ada9a124/Formula/llvm.rb#L181
@jtbandes:谢谢你提供的信息。
我想为我们的菜鸟分享这些明确的步骤:
$ tar -zxvf <download_dir_path>/llvm-6.0.1.src.tar.xz
$ cd llvm-6.0.1.src/tools
$ tar -zxcf <download_dir_path>/cfe-6.0.1.src.tar.xz
$ cd llvm-6.0.1.src/tools/cfe-6.0.1.src/tools
$ tar -zxvf <download_dir_path>/clang-tools-extra-6.0.1.src.tar.xz
结果在目录llvm-6.0.1.src/tools/cfe-6.0.1.src/tools/clang-tools-extra-6.0.1.src/clang-tidy
; 这是不正确的。 lang-tools-extra-6.0.1.src
需要重命名为extra
(如@jtbandes 所述)。
$ cd llvm-6.0.1.src/tools/cfe-6.0.1.src/tools
$ mv clang-tools-extra-6.0.1.src extra
or
$ ln -s clang-tools-extra-6.0.1.src extra
路径llvm-6.0.1.src/tools/cfe-6.0.1.src/tools/extra/clang-tidy
现在应该是有效的
$ cd llvm-6.0.1.src
$ mkdir build
$ cd build
$ cmake ..
$ make
一切都应该没有错误或警告。
构建输出可以在llvm-6.0.1.src/build/bin
。
我和 Per Mildner 有同样的问题。 通过 YvesgereY 发布的稍加修改的代码解决了 Got(我没有足够的声誉来对该答案发表评论,因此是一个新答案)。
简而言之,我在 cmake 中添加了-G "Unix Makefiles"
。 如果没有这个选项,就不会生成 makefile。 另外,我使用了-DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra;"
. 当只指定了 clang-tools-extra 时它不起作用。
这是整个片段:
git clone https://github.com/llvm/llvm-project.git
cd llvm-project
mkdir build
cd build
cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=RelWithDebInfo -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra;" ../llvm
make -j8 install-clang-tidy
对于正在寻找最新 (LLVM 11) Windows 构建说明的每个人(确保在 PATH 中安装并设置了 CMake、Visual Studio 2019 和 git):
git clone --config core.autocrlf=false https://github.com/llvm/llvm-project.git
cd llvm-project
mkdir build
cd build
cmake -G "Visual Studio 16 2019" -Thost=x64 -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra" ../llvm
cmake --build . --target clang-tidy --config RelWithDebInfo --parallel
cmake --build . --target clang-query --config RelWithDebInfo --parallel
这对我有用:
mkdir build
files="
llvm-12.0.1.src.tar.xz
clang-12.0.1.src.tar.xz
clang-tools-extra-12.0.1.src.tar.xz
"
for f in $files; do
echo "Untar $f"
tar xf $f
done
mv llvm-12.0.1.src llvm
mv clang-12.0.1.src llvm/tools/clang
mv clang-tools-extra-12.0.1.src llvm/tools/clang/tools/extra
cd build
cmake -G "Unix Makefiles" \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr/local/llvm \
-DCLANG_BUILD_TOOLS=ON \
../llvm
make -j16 install
从 LLVM 14.0.0 开始,稀疏签出不再有效(至少暂时如此)并且顶级目录不包含 CMakeLists.txt。 我相信树布局在 LLVM 13.0.1 之后发生了变化。 因此,如果不进行相当多的修改,这里的所有方法都无法奏效。
以下是构建15.0.0git版本(撰写本文时最新版本)的方法。 参见相关问题: https://github.com/llvm/llvm-project/issues/53281 。
首先,使用 git 获取压缩代码或克隆(较慢)
$ wget "https://github.com/llvm/llvm-project/archive/refs/heads/main.zip" -O llvm.zip
$ unzip llvm.zip
像往常一样,创建一个构建目录并在llvm目录中运行 cmake。
$ mkdir /build
$ cd /build
$ cmake -G "Unix Makefiles" \
-DCMAKE_INSTALL_PREFIX=/usr/local/llvm \
-DCMAKE_BUILD_TYPE=Release \
-DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra" \
/llvm-project-main/llvm
在生成的文件中向下导航,只构建 clang-tidy。
$ cd /build/tools/clang/tools/extra/clang-tidy
$ make install
Cmake 将安装到/usr/local/llvm
。 此外,如果您想查看特定版本,请在第一步中使用标签,如下所示:
$ wget "https://github.com/llvm/llvm-project/archive/refs/tags/llvmorg-14.0.0.zip"
请注意,您需要为运行clang-tidy 提供匹配的内置标头,这些标头位于llvm-project/clang/lib/Headers
下的 GitHub 中,可以使用-extra-arg=-I/path/to/builtin/headers
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.