2016-09-12 3 views
1

новый для clang и clang-tidy здесь.Clang-Tidy не может найти мои заголовочные файлы

У меня есть проект с этим типом структуры: project/ - build/ - cmake/ - component1/ - src/ - someFile.cpp - someFile2.cpp - someFile.hpp - someFile2.hpp - component2/ - etc... -

Когда я использую лязг-аккуратным, чтобы пройти через все файлы в project/component1/ с этой командой: clang-tidy project/component1/src/* -checks=-*,clang-analyzer-*,-clang-analyzer-alpha*

Он заканчивает бросать ошибку, как это: $HOME/project/component1/src/someFile.cpp:18:10: error: 'project/component1/someFile.hpp' file not found [clang-diagnostic-error] \#include "component1/someFile.hpp"

+0

Может ли быть, что они не находятся на одном уровне («someFile.hpp» не находится в/src)? – Griffin

+0

@ Grif-fin Я подумал об этом, но мне не разрешено связываться с файловой структурой. Есть ли параметры команды, которые я могу установить, чтобы сообщить ему, где находятся файлы * .hpp? Описание каждого варианта не всегда достаточно высокого уровня, чтобы я мог получить то, что происходит. *: -/ –

+0

Я просто попробовал запустить команду clang-tidy в каталоге 'project/component1 /', но я получаю ту же ошибку или те файлы под 'src /'. –

ответ

0

Этот ответ поможет вам, если вы используете CMake для управления вашим проектом.

У CMake есть возможность создать файл .json, содержащий все вызовы компилятора с параметрами командной строки. Этот файл может быть предоставлен лязг-аккуратным с опцией:

-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. 

В качестве документации говорится, вы должны установить переменную CMAKE_EXPORT_COMPILE_COMMANDS для создания файла .json с CMake, а затем передать выходной каталог CMake в clang- аккуратный. Clang-tidy затем получит входящие ссылки из команд в файле .json.