2016-11-05 4 views
4

J'essaie d'utiliser l'utilisation de l'intégration clang-tidy avec cmake et je voudrais passer l'argument -check. Je l'ai essayé d'ajouter -DCMAKE_CXX_CLANG_TIDY="/usr/local/opt/llvm38/bin/clang-tidy-3.8;-checks=*" lors de l'appel CMake, mais mon makefile commandes fin ressembler:Comment puis-je spécifier des arguments supplémentaires à utiliser avec la variable CMAKE_CXX_CLANG_TIDY

/usr/local/Cellar/cmake/3.6.2/bin/cmake -E __run_iwyu --tidy="/usr/local/opt/llvm38/bin/clang-tidy-3.8;-checks=*" --source=/Users/ellery/work/.....

en d'autres termes, il semble que; les arguments séparés ne sont pas analysés séparément. J'ai également essayé de définir la propriété cible CXX_CLANG_TIDY directement sur ma cible avec la même valeur et j'ai le même comportement.

Quelqu'un a-t-il réussi à appeler clang-tidy avec des arguments supplémentaires via cmake?

Répondre

2

Il fonctionne comme prévu avec CMake 3.7.2 et clang-tidy 4.0.

E.g. spécifiant directement sur la ligne de commande:

cmake -DCMAKE_CXX_CLANG_TIDY="clang-tidy;-style=file;-checks=*" 

ou dans le CMakeLists.txt:

set(CMAKE_CXX_CLANG_TIDY "clang-tidy;-style=file;-checks=*") 

Vous devez vous assurer que les clang-tidy arguments sont corrects, sinon il semble échouer en silence.

0

Tout est correct. CMake n'analyse pas ces arguments lors de la génération du makefile, mais lorsque le makefile est exécuté. Lorsqu'un fichier a été compilé avec succès, alors clang-tidy sera exécuté automatiquement.

Vous pouvez essayer de régler CMAKE_CXX_CLANG_TIDY directement dans votre CMakeLists.txt:
set(CMAKE_CXX_CLANG_TIDY "clang-tidy" "-checks=*")

+0

hmmm - c'est intéressant. Lorsque je le mets dans mon fichier cmake, j'échoue presque immédiatement avec: 'Erreur d'exécution '/ usr/local/opt/llvm38/bin/clang-tidy-3.8'. Cependant, il n'y a pas plus de détails sur l'échec. Si je laisse de côté l'argument "-checks = *", la construction semble réussir, mais j'obtiens le comportement (probablement) par défaut de clang-tidy. –