2016-09-12 2 views
1

nouveau à clang et clang-tidy ici.Clang-Tidy ne peut pas trouver mes fichiers d'en-tête

J'ai un projet avec ce type de structure: project/ - build/ - cmake/ - component1/ - src/ - someFile.cpp - someFile2.cpp - someFile.hpp - someFile2.hpp - component2/ - etc... -

Lorsque j'utilise clang-propre à passer par tous les fichiers project/component1/ avec cette commande: clang-tidy project/component1/src/* -checks=-*,clang-analyzer-*,-clang-analyzer-alpha*

Il finit par jeter une erreur comme ceci: $HOME/project/component1/src/someFile.cpp:18:10: error: 'project/component1/someFile.hpp' file not found [clang-diagnostic-error] \#include "component1/someFile.hpp"

+0

Se pourrait-il qu'ils ne soient pas du même niveau ('someFile.hpp' n'est pas dans/src)? – Griffin

+0

@ Grif-fin J'ai pensé à ça, mais je n'ai pas le droit de jouer avec la structure du fichier. Y at-il des options de commande que je peux définir pour lui faire savoir où sont les fichiers * .hpp? Les descriptions de chaque option ne sont pas toujours suffisamment détaillées pour que je puisse comprendre ce qui se passe. *: -/ –

+0

J'ai juste essayé d'exécuter la commande clang-tidy sur le répertoire 'project/component1 /' mais j'obtiens la même erreur ou les fichiers sous 'src /'. –

Répondre

0

Cette réponse ne vous aidera que si vous utilisez CMake pour gérer votre projet. CMake a une option pour créer un fichier .json qui contient tous les appels du compilateur avec des options de ligne de commande. Ce fichier peut être donné à clang-rangé avec l'option:

-p <build-path> is used to read a compile command database. 

    For example, it can be a CMake build directory in which a file named 
    compile_commands.json exists (use -DCMAKE_EXPORT_COMPILE_COMMANDS=ON 
    CMake option to get this output). When no build path is specified, 
    a search for compile_commands.json will be attempted through all 
    parent paths of the first input file . See: 
    http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html for an 
    example of setting up Clang Tooling on a source tree. 

Comme les états de documentation, vous devez définir la variable CMAKE_EXPORT_COMPILE_COMMANDS pour générer le fichier .json avec CMake et passer ensuite le répertoire de sortie CMake à clang- rangé. Clang-tidy obtiendra alors les chemins d'inclusion à partir des commandes du fichier .json.