繁体   English   中英

如何构建最新的 clang-tidy?

[英]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:谢谢你提供的信息。

我想为我们的菜鸟分享这些明确的步骤:

1.从LLVM下载页面下载已发布的源代码

2. 将其中的每一个都解压到正确的目录中:

$ 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 所述)。

3. 所以重命名它或提供一个符号链接:

$ 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现在应该是有效的

4. 构建它:

$ cd llvm-6.0.1.src
$ mkdir build
$ cd build
$ cmake ..
$ make 

一切都应该没有错误或警告。

5. 构建输出:

构建输出可以在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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM