Быстрый шаблон C++ для современных проектов CMake, призванный стать простой в использовании отправной точкой.
Это мой личный взгляд на шаблон такого типа, поэтому я могу не использовать лучшие практики, иначе вы можете не согласиться с тем, как я что-то делаю. Мы очень ценим любые отзывы!
Современная конфигурация и проект CMake , в котором, насколько мне известно, используются лучшие практики,
Пример конфигурации Clang-Format , основанной на базовой модели Google , с небольшими изменениями. Это только отправная точка, поскольку стиль кодирования является субъективным вопросом, каждый может либо удалить его (по умолчанию LLVM ), либо предоставить свою собственную альтернативу.
Интеграция статических анализаторов с Clang-Tidy и Cppcheck , первый из которых является опцией по умолчанию,
Поддержка Doxygen через опцию ENABLE_DOXYGEN
, которую вы можете включить, если хотите ее использовать,
Поддержка модульного тестирования через GoogleTest (с возможностью включения GoogleMock ) или Catch2 ,
Покрытие кода , включенное с помощью опции ENABLE_CODE_COVERAGE
, посредством интеграции Codecov CI,
Поддержка менеджера пакетов с помощью Conan и Vcpkg через соответствующие опции.
Рабочие процессы CI для Windows, Linux и MacOS с использованием GitHub Actions , использующие функции кэширования для обеспечения минимального времени выполнения,
Шаблоны .md для: README , Рекомендации по участию , Проблемы и запросы на извлечение ,
Разрешительная лицензия , позволяющая максимально легко интегрировать ее. Шаблон распространяется по лицензии Unlicense,
Варианты сборки в виде библиотеки только заголовков или исполняемого файла, а не только статической или общей библиотеки.
Интеграция Ccache для ускорения времени восстановления.
Эти инструкции помогут вам запустить копию проекта на вашем локальном компьютере для целей разработки и тестирования.
Этот проект задуман как шаблон, поэтому версии используемого программного обеспечения могут быть изменены, чтобы лучше соответствовать потребностям разработчика(ов). Если вы хотите использовать шаблон «как есть» , то есть использовать рекомендованные здесь версии, вам потребуется:
CMake v3.15+ — находится на https://cmake.org/.
Компилятор C++ — должен поддерживать как минимум стандарт C++17 , т.е. MSVC , GCC , Clang.
Примечание. Вам также необходимо предоставить CMake поддерживаемый генератор.
Установить проект довольно легко, все, что вам нужно сделать, это клонировать его с GitHub или сгенерировать из него новый репозиторий (тоже на GitHub ).
Если вы хотите клонировать репозиторий, а не создавать из него, вам просто нужно запустить:
git clone https://github.com/filipdutescu/modern-cpp-template/
После получения копии проекта любым из вышеперечисленных методов создайте новую папку в папке include/
с именем вашего проекта. Отредактируйте cmake/SourcesAndHeaders.cmake
чтобы добавить свои файлы.
Вам также потребуется переименовать файл cmake/ProjectConfig.cmake.in
чтобы он начинался с точного имени вашего проекта . Например, cmake/MyNewProjectConfig.cmake.in
. Вам также следует внести те же изменения в предоставленные рабочие процессы GitHub, в частности .github/workflows/ubuntu.yml
, в котором вам следует заменить параметр CMake -DProject_ENABLE_CODE_COVERAGE=1
на -DMyNewProject_ENABLE_CODE_COVERAGE=1
.
Наконец, измените "Project"
из CMakeLists.txt
с
project (
"Project"
VERSION 0.1.0
LANGUAGES CXX
)
на точное имя вашего проекта , т.е. используя предыдущее имя, оно станет:
project (
MyNewProject
VERSION 0.1.0
LANGUAGES CXX
)
Чтобы установить уже созданный проект, вам необходимо запустить цель install
с помощью CMake. Например:
cmake --build build --target install --config Release
# a more general syntax for that command is:
cmake --build < build_directory > --target install --config < desired_config >
Чтобы собрать проект, все, что вам нужно сделать после правильной установки проекта , — это запустить процедуру CMake, аналогичную приведенной ниже:
mkdir build/ && cd build/
cmake .. -DCMAKE_INSTALL_PREFIX=/absolute/path/to/custom/install/directory
cmake --build . --target install
Примечание. Пользовательский
CMAKE_INSTALL_PREFIX
можно опустить, если вы хотите выполнить установку в папку установки по умолчанию.
Дополнительные параметры, которые вы можете установить для проекта, можно найти в файле cmake/StandardSettings.cmake
. Для некоторых опций может потребоваться дополнительная настройка в соответствующих файлах *.cmake
(т. е. Конану нужен CONAN_REQUIRES
, и для правильной работы может потребоваться настройка CONAN_OPTIONS
; эти два параметра установлены в файле cmake/Conan.cmake
).
Чтобы сгенерировать документацию для проекта, вам необходимо настроить сборку для использования Doxygen. Это легко сделать, изменив показанный выше рабочий процесс следующим образом:
mkdir build/ && cd build/
cmake .. -D < project_name > _ENABLE_DOXYGEN=1 -DCMAKE_INSTALL_PREFIX=/absolute/path/to/custom/install/directory
cmake --build . --target doxygen-docs
Примечание. При этом в корневом каталоге проекта будет создан каталог
docs/
.
По умолчанию шаблон использует Google Test для модульного тестирования. Модульное тестирование можно отключить в параметрах, установив для ENABLE_UNIT_TESTING
(из cmake/StandardSettings.cmake) значение false. Чтобы запустить тесты, просто используйте CTest из каталога сборки, передав желаемую конфигурацию, для которой нужно запускать тесты. Пример этой процедуры:
cd build # if not in the build directory already
ctest -C Release # or `ctest -C Debug` or any other configuration you wish to test
# you can also run tests with the `-VV` flag for a more verbose output (i.e.
# GoogleTest output as well)
Если применимо, должно быть представлено здесь.
Если применимо, должно быть представлено здесь.
Пожалуйста, прочтите CONTRIBUTING.md, чтобы узнать подробнее о том, как вы можете стать участником, и о процессе отправки нам запросов на включение.
В этом проекте для управления версиями используется SemVer. Список существующих версий можно найти в релизах проекта.
Этот проект лицензируется по Unlicense - подробности смотрите в файле LICENSE.