klogg - 高速で高度なログエクスプローラー
JNGL - 使いやすいクロスプラットフォーム 2D ゲーム ライブラリ
AALTITOAD - Tick Tock Automata の検証およびシミュレーター
ZIMO-エレクトロニク
ada - 最新の C++ で書かれた WHATWG 準拠の高速 URL パーサー
codon - LLVM を使用した、高性能、ゼロオーバーヘッド、拡張可能な Python コンパイラー
CRoaring - SIMD (AVX2、AVX-512、NEON) 最適化を備えた C (および C++) のローリング ビットマップ: 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 を使用して lua をダウンロードし、sol2 で構成する完全な例については、ここを参照してください。
ソース コードを含む完全な例についてはサンプル ディレクトリを参照し、さらに多くのサンプル スニペットについては 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
ブランチの 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://github.com/gabime/spdlog/archive/c1569a3d293a6b511ecb9c18b2298826c9578d9f.tar.gz
次のスニペットは、 Linux マシンでwget
とsha256sum
使用して SHA256 ハッシュを決定する方法を示しています。
wget https://github.com/gabime/spdlog/archive/refs/tags/v1.13.0.zip -O - | sha256sum