web-dev-qa-db-fra.com

Comment construire le dernier clang-tidy?

J'ai essayé de construire clang-tidy à partir de sources mais il se plaint d'une commande CMake non définie:

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!

Comment puis-je créer clang-tidy ou, alternativement, comment installer la dernière version sur macOS?

17
ruipacheco

[~ # ~] modifier [~ # ~] : cette réponse est obsolète - le projet LLVM est passé à un seul référentiel git à - https://github.com/llvm/llvm-project . Voir les réponses ci-dessous pour des instructions mises à jour.


clang-tidy est destiné à être construit à l'intérieur une extraction de llvm/clang, et dépend des macros CMake du projet llvm. Vous devriez vérifier le repo llvm, puis le repo clang à l'intérieur llvm/tools/clang, alors le repo clang-tools-extra dans llvm/tools/clang/tools/extra. Ensuite, vous pouvez exécuter CMake sur le répertoire de niveau supérieur et make clang-tidy devrait marcher.

Si vous n'êtes pas intéressé à le construire vous-même, il semble que la formule Homebrew pour LLVM inclut également les outils supplémentaires: https://github.com/Homebrew/homebrew-core/blob/382d3defb5bc48ce2dccd17261be70c4ada9a124/Formula/llvm .rb # L181

16
jtbandes

@jtbandes: Merci pour l'information.

Je voudrais partager ces étapes explicites pour nous noobs:

1. Téléchargez les sources publiées depuis Page de téléchargement LLVM

2. Détarrez chacun d'eux dans le répertoire approprié:

$ 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

Résultats dans un répertoire llvm-6.0.1.src/tools/cfe-6.0.1.src/tools/clang-tools-extra-6.0.1.src/clang-tidy; Ce qui est incorrect. Le lang-tools-extra-6.0.1.src doit être renommé en extra (comme mentionné par @jtbandes).

3. Renommez-le ou fournissez un lien symbolique:

$ 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

Le chemin llvm-6.0.1.src/tools/cfe-6.0.1.src/tools/extra/clang-tidy devrait maintenant être valide

4. Construisez-le:

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

Tout devrait se faire sans erreurs ni avertissements.

5. Construire la sortie:

La sortie du build se trouve dans llvm-6.0.1.src/build/bin.

13
natersoz

Étapes à jour:

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

Référence, ninja et autres détails: mon propre article de blog.

8
YvesgereY

J'ai eu le même problème que Per Mildner. Got est résolu avec le code légèrement modifié que YvesgereY a posté (je n'ai pas assez de réputation pour poster un commentaire sur cette réponse, donc une nouvelle réponse à la place).

En bref, j'ai ajouté -G "Unix Makefiles" à cmake. Sans cette option, aucun makefile ne sera généré. De plus, j'ai utilisé -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra;". Cela ne fonctionnait pas quand juste clang-tools-extra était spécifié.

Voici l'extrait entier:

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
1
9cvele3