Я работаю над библиотекой только для заголовков и хотел бы использовать clang-tidy, чтобы убедиться, что я соблюдаю основные принципы C ++ https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines
Независимо от того, что я пытаюсь, мне кажется, что я не могу работать с библиотекой только для заголовков (вероятно, потому, что на самом деле ничего не компилируется, пока библиотека не будет использована) ... Но должен быть какой-то обходной путь, чтобы эта работа работала правильно . Наверняка кто-то еще написал библиотеку только для заголовков, в которой они хотели бы использовать clang-tidy.
Чтобы попытаться упростить проблему, я сделал небольшой тестовый проект, чтобы попытаться заставить его работать. Этот проект состоит всего из двух файлов. Файл CMakeLists.txt и файл заголовка.
CMakeLists.txt:
cmake_minimum_required(VERSION 3.11.4)
project(my_project LANGUAGES CXX)
# This does not seem to work at all for header only libraries
# I even tried messing with the "-header-filter" parameter and had no luck
set(CMAKE_CXX_CLANG_TIDY clang-tidy;-checks=-*,cppcoreguidelines-*)
add_library(my_project INTERFACE)
target_include_directories(my_project
INTERFACE
$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include>
)
включить / my_project.hpp:
#include <iostream>
// I know it is bad to do this in a header file.
// This is intentional to give clang-tidy something to catch
using namespace std;
template <int N>
void print()
{
for (int i = 0; i < N; ++i)
{
cout << "Hello, world!" << endl;
}
}
Когда я запускаю CMake с:
mkdir build
cd build
cmake ..
cmake --build .
Я не получаю вывода от clang-tidy. Как я могу сделать упорядоченные библиотеки синтаксического анализа только заголовков и сообщить о потенциальных проблемах?