klogg - 快速進階日誌瀏覽器
JNGL - 易於使用的跨平台 2D 遊戲庫
AALTITOAD - 滴答自動機的驗證器和模擬器
子墨電子
ada - 用現代 C++ 寫的符合 WHATWG 的快速 URL 解析器
codon - 使用 LLVM 的高效能、零開銷、可擴充的 Python 編譯器
CRoaring - C(和 C++)中的咆哮點陣圖,具有 SIMD(AVX2、AVX-512 和 NEON)優化:由 Apache Doris、ClickHouse 和 StarRocks 使用
這些範例示範如何將一些知名專案納入 CPM。請參閱 wiki 以了解更多片段。
CPMAddPackage( "gh:catchorg/[email protected]" )
CPMAddPackage( "gh:ericniebler/range-v3#0.12.0" )
# as the tag is in an unusual format, we need to explicitly specify the version
CPMAddPackage( "gh:jbeder/yaml-cpp#[email protected]" )
CPMAddPackage(
NAME nlohmann_json
VERSION 3.9.1
GITHUB_REPOSITORY nlohmann/json
OPTIONS
"JSON_BuildTests OFF"
)
Boost 是一個很大的項目,需要一段時間才能下載。強烈建議使用CPM_SOURCE_CACHE
。克隆移動的資料比來源存檔多得多,因此此範例將使用 Boost 的 github 頁面發布的壓縮來源存檔 (tar.xz)。
# boost is a huge project and directly downloading the 'alternate release'
# from github is much faster than recursively cloning the repo.
CPMAddPackage(
NAME Boost
VERSION 1.84.0
URL https://github.com/boostorg/boost/releases/download/boost-1.84.0/boost-1.84.0.tar.xz
URL_HASH SHA256 =2e64e5d79a738d0fa6fb546c6e5c2bd28f88d268a2a080546f74e5ff98f29d0e
OPTIONS "BOOST_ENABLE_CMAKE ON"
)
有關使用 CPM 下載和設定 Boost C++ 程式庫的工作範例,請參閱此處。
# the install option has to be explicitly set to allow installation
CPMAddPackage(
GITHUB_REPOSITORY jarro2783/cxxopts
VERSION 2.2.1
OPTIONS "CXXOPTS_BUILD_EXAMPLES NO" "CXXOPTS_BUILD_TESTS NO" "CXXOPTS_ENABLE_INSTALL YES"
)
CPMAddPackage(
NAME benchmark
GITHUB_REPOSITORY google/benchmark
VERSION 1.5.2
OPTIONS "BENCHMARK_ENABLE_TESTING Off"
)
if (benchmark_ADDED)
# enable c++11 to avoid compilation errors
set_target_properties (benchmark PROPERTIES CXX_STANDARD 11)
endif ()
CPMAddPackage(
NAME lua
GIT_REPOSITORY https://github.com/lua/lua.git
VERSION 5.3.5
DOWNLOAD_ONLY YES
)
if (lua_ADDED)
# lua has no CMake support, so we create our own target
FILE ( GLOB lua_sources ${lua_SOURCE_DIR} /*.c)
list ( REMOVE_ITEM lua_sources " ${lua_SOURCE_DIR} /lua.c" " ${lua_SOURCE_DIR} /luac.c" )
add_library (lua STATIC ${lua_sources} )
target_include_directories (lua
PUBLIC
$< BUILD_INTERFACE : ${lua_SOURCE_DIR} >
)
endif ()
有關使用 CPM 透過 sol2 下載和設定 lua 的完整範例,請參閱此處。
請參閱範例目錄以取得包含原始程式碼的完整範例,並查看 wiki 以取得更多範例片段。
使用壓縮源存檔通常比淺克隆快得多。或者,您可以使用 SHA256 或類似方法驗證完整性。設定哈希對於確保匯入特定來源非常有用,特別是因為標籤、分支和檔案可能會變更。
讓我們看看將 spdlog 加入到專案中:
CPMAddPackage(
NAME spdlog
URL https://github.com/gabime/spdlog/archive/refs/tags/v1.12.0.zip
URL_HASH SHA256 =6174bf8885287422a6c6a0312eb8a30e8d22bcfcee7c48a6d02d1835d7769232
)
URL_HASH 是可選的,但對於發布來說這是一個好主意。
可在此處找到用於確定 URL 的資訊。
並非每個軟體包都提供版本,但對於提供版本的軟體包,可以在專案的版本頁面上找到它們。在瀏覽器中,特定版本的 URL 是透過右鍵單擊並選擇所需版本的Copy link address
(或類似內容)來確定的。這是您將在 URL 部分中使用的值。
這是 zip 格式的 spdlog 版本 1.13.0 的 URL: https://github.com/gabime/spdlog/archive/refs/tags/v1.13.0.zip
://github.com/gabime/spdlog/archive/refs/tags/v1.13.0.zip
分支的 URL 對於瀏覽器來說是不明顯的。但弄清楚它仍然相當容易。格式如下:
https://github.com/
存檔類型可以是tar.gz
或zip
之一。
spdlog 分支v2.x
的 URL 為: https://github.com/gabime/spdlog/archive/refs/heads/v2.x.tar.gz
標籤類似,但格式如下:
https://github.com/
spdlog的標籤v1.8.5
是這樣的:
https://github.com/gabime/spdlog/archive/refs/tags/v1.8.5.tar.gz
跟發布的一模一樣。
如果特定提交包含您需要的程式碼,則其定義如下:
https://github.com/
範例:https: https://github.com/gabime/spdlog/archive/c1569a3d293a6b511ecb9c18b2298826c9578d9f.tar.gz
以下程式碼片段說明如何使用wget
和sha256sum
在 Linux 電腦上確定 SHA256 哈希值:
wget https://github.com/gabime/spdlog/archive/refs/tags/v1.13.0.zip -O - | sha256sum