如何建立最新的铿锵声?

时间:2017-11-13 00:23:14

标签: c++ clang llvm clang-tidy

我试图从sources建立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上安装最新版本?

5 个答案:

答案 0 :(得分:12)

clang-tidy旨在 内部构建llvm / clang,并依赖于来自llvm项目的CMake宏。您应该查看llvm repo,然后查看llvm/tools/clang内的clang repo,然后 llvm/tools/clang/tools/extra内的clang-tools-extra repo。然后,您可以在顶级目录上运行CMake,make clang-tidy应该可以运行。

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

答案 1 :(得分:9)

我和Per Mildner有同样的问题。可以通过略微修改的YvesgereY发布代码来解决问题(我没有足够的声誉来为该答案发布评论,因此提供了一个新答案)。

简而言之,我在{{ake}}中添加了-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

答案 2 :(得分:8)

@jtbandes:感谢您提供信息。

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

1。从LLVM Download Page

下载已发布的来源

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

中找到构建输出

答案 3 :(得分:4)

最新步骤:

exports = async function(authEvent) {
  const mongodb = context.services.get("mongodb-atlas");
  const newUsers = mongodb.db("DATABASE").collection("newUsers");

  const { user, time } = authEvent;
  const newUser = { ...user, eventLog: [ { "created": time } ], access: [{"status": "pending"}] };
  await newUsers.insertOne(newUser);
}

参考资料,忍者及其他详细信息:my own blog post.

答案 4 :(得分:1)

对于正在寻找最新 (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