如何建立最新的铿锵声?

rui*_*eco 16 c++ llvm clang 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!
Run Code Online (Sandbox Code Playgroud)

我怎样才能构建铿锵有力的,或者如何在macOS上安装最新版本?

Yve*_*reY 16

最新步骤:

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
Run Code Online (Sandbox Code Playgroud)

参考、忍者和其他详细信息:我自己的博客文章。

  • 今天尝试了这个,但 make 抱怨没有目标“install-clang-tidy”。 (4认同)

jtb*_*des 14

clang-tidy旨在构建 llvm/clang的结帐中,并依赖于llvm项目中的CMake宏.你应该看看llvm repo,然后是里面的clang repo llvm/tools/clang,然后是里面的clang-tools-extra repo llvm/tools/clang/tools/extra.然后你可以在顶级目录上运行CMake,并且make clang-tidy应该可以工作.

如果您对自己构建它不感兴趣,看起来LLb的Homebrew公式还包括额外的工具:https://github.com/Homebrew/homebrew-core/blob/382d3defb5bc48ce2dccd17261be70c4ada9a124/Formula/llvm.rb#L181

  • 所以我需要在llvm / tools内检出clang,然后在llvm / clang / tools / extra内检出clang-tools-extra?共有3个Checkout 3个存储库? (2认同)

nat*_*soz 12

@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
Run Code Online (Sandbox Code Playgroud)

结果在目录中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
Run Code Online (Sandbox Code Playgroud)

该路径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 
Run Code Online (Sandbox Code Playgroud)

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

5.构建输出:

构建输出可以在中找到llvm-6.0.1.src/build/bin.


9cv*_*le3 12

我和 Per Mildner 有同样的问题。通过 YvesgereY 发布的稍加修改的代码解决了 Got(我没有足够的声誉来对该答案发表评论,因此是一个新答案)。

总之,我添加-G "Unix Makefiles"到cmake。如果没有这个选项,就不会生成 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
Run Code Online (Sandbox Code Playgroud)

  • 您应该知道,RelWithDebInfo 将导致 1.8GB 的​​大型 clang-tidy。最好只使用 Release。 (5认同)