J'ai essayé d'utiliser clang-modernize
avec CMAKE_EXPORT_COMPILE_COMMANDS
comme recommandé dans l'aide de cet outil.
Avec cette option, cmake génère un fichier JSON contenant des informations de compilation comme les chemins d'inclusion ( voir aussi ).
Cette variable est acceptée sur la ligne de commande de cmake, mais cmake --help-variable CMAKE_EXPORT_COMPILE_COMMANDS
ne fonctionne pas (ce qui est cohérent avec cette publication sur la liste de diffusion ).
Quelqu'un a-t-il une idée de comment l'utiliser?
Je pourrais aussi l'utiliser avec cppcheck.
Quelques informations supplémentaires
J'ai découvert sur un forum des développeurs de clang que cette fonctionnalité cmake n'est pas disponible sur tous les générateurs. Cela pourrait changer à l'avenir, dans l'intervalle, ma question demeure et j'essaierai également de voir ce qui se passera si j'utilise d'autres générateurs que Visual Studio.
Je suggère de mettre
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
dans le CMakeList.txt
Depuis CMake 3.5, l'option CMAKE_EXPORT_COMPILE_COMMANDS
Est prise en charge par les générateurs Ninja et Makefiles .
Cela signifie que pour générer une base de données de compilation JSON, il faut sélectionner un générateur qui la prend en charge.
Par exemple sous UNIX:
cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=1 /path/to/src
(car il utilise le générateur de makefile là-bas, par défaut)
Sinon, vous pouvez spécifier explicitement un générateur comme celui-ci:
cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=1 /path/to/src -G Ninja
Ou:
cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=1 /path/to/src -G 'Unix Makefiles'
Ou une autre variante de makefiles prise en charge par votre cmake - une liste des générateurs pris en charge est incluse dans la sortie de cmake --help
.
Notez que le fichier JSON de la base de données de compilation est généré au moment de l'exécution de cmake - pas au moment de la compilation. De plus, avec les versions récentes de clang (par exemple clang >= 3.8
), clang-modernize
A été fusionné dans clang-tidy
.
Moi aussi, je n'ai pas pu travailler sur le générateur Visual Studio. Il a cependant fonctionné en utilisant le générateur "NMake Makefiles".
C:\work\build>cmake -G "NMake Makefiles" -DCMAKE_EXPORT_COMPILE_COMMANDS=ON ..