現代 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 文件