现代 CMake 项目的快速 C++ 模板,旨在成为一个易于使用的起点。
这是我个人对此类模板的看法,因此我可能不会使用最佳实践,或者您可能不同意我的做法。非常感谢任何和所有反馈!
据我所知,现代CMake配置和项目使用了最佳实践,
Clang-Format配置的示例,灵感来自基本Google模型,并进行了一些细微的调整。这只是作为一个起点,因为编码风格是一个主观问题,每个人都可以自由删除它(对于LLVM默认值)或提供自己的替代方案,
静态分析器集成,与Clang-Tidy和Cppcheck集成,前者是默认选项,
Doxygen支持,通过ENABLE_DOXYGEN
选项,如果您想使用它,可以启用它,
单元测试支持,通过GoogleTest (带有启用GoogleMock 的选项)或Catch2 ,
代码覆盖率,通过Codecov CI 集成使用ENABLE_CODE_COVERAGE
选项启用,
包管理器支持,包括Conan和Vcpkg ,通过它们各自的选项
使用GitHub Actions的 Windows、Linux 和 MacOS 的 CI 工作流程,利用缓存功能,确保最短的运行时间,
.md 模板:自述文件、贡献指南、问题和拉取请求、
宽松的许可证允许您尽可能轻松地集成它。该模板已根据 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
。
最后,将CMakeLists.txt
中的"Project"
更改为
project (
"Project"
VERSION 0.1.0
LANGUAGES CXX
)
到您项目的确切名称,即使用以前的名称,它将变成:
project (
MyNewProject
VERSION 0.1.0
LANGUAGES CXX
)
要安装已构建的项目,您需要使用 CMake 运行install
目标。例如:
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 需要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 文件