klogg - penjelajah log tingkat lanjut yang cepat
JNGL - perpustakaan game 2D lintas platform yang mudah digunakan
AALTITOAD - pemverifikasi dan simulator untuk Tick Tock Automata
ZIMO-Elektronik
ada - Pengurai URL cepat dan sesuai dengan WHATWG yang ditulis dalam C++ modern
kodon - Kompiler Python berkinerja tinggi, tanpa overhead, dan dapat diperluas menggunakan LLVM
CRoaring - Bitmap menderu dalam C (dan C++), dengan optimasi SIMD (AVX2, AVX-512 dan NEON): digunakan oleh Apache Doris, ClickHouse, dan StarRocks
Contoh-contoh ini menunjukkan cara memasukkan beberapa proyek terkenal dengan CPM. Lihat wiki untuk cuplikan lebih lanjut.
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 adalah proyek besar dan memerlukan waktu cukup lama untuk diunduh. Sangat disarankan untuk menggunakan CPM_SOURCE_CACHE
. Kloning memindahkan lebih banyak data daripada arsip sumber, jadi contoh ini akan menggunakan arsip sumber terkompresi (tar.xz) yang dirilis dari halaman github Boost.
# 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"
)
Untuk contoh kerja penggunaan CPM untuk mengunduh dan mengonfigurasi Perpustakaan Boost C++, lihat di sini.
# 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 ()
Untuk contoh lengkap penggunaan CPM untuk mengunduh dan mengkonfigurasi lua dengan sol2 lihat di sini.
Lihat direktori contoh untuk contoh lengkap dengan kode sumber dan lihat wiki untuk mengetahui lebih banyak contoh cuplikan.
Menggunakan arsip sumber terkompresi biasanya jauh lebih cepat daripada kloning dangkal. Secara opsional, Anda dapat memverifikasi integritas menggunakan SHA256 atau serupa. Menyetel hash berguna untuk memastikan sumber tertentu diimpor, terutama karena tag, cabang, dan arsip dapat berubah.
Mari kita lihat menambahkan spdlog ke sebuah proyek:
CPMAddPackage(
NAME spdlog
URL https://github.com/gabime/spdlog/archive/refs/tags/v1.12.0.zip
URL_HASH SHA256 =6174bf8885287422a6c6a0312eb8a30e8d22bcfcee7c48a6d02d1835d7769232
)
URL_HASH bersifat opsional, namun merupakan ide bagus untuk rilis.
Informasi untuk menentukan URL dapat ditemukan di sini.
Tidak semua paket perangkat lunak menyediakan rilis, tetapi bagi paket perangkat lunak yang menyediakannya, rilis tersebut dapat ditemukan di halaman rilis proyek. Di browser, URL rilis spesifik ditentukan di browser ditentukan dengan mengklik kanan dan memilih Copy link address
(atau serupa) untuk rilis yang diinginkan. Ini adalah nilai yang akan Anda gunakan di bagian URL.
Ini adalah URL untuk spdlog rilis 1.13.0 dalam format zip: https://github.com/gabime/spdlog/archive/refs/tags/v1.13.0.zip
URL untuk cabang tidak jelas dari browser. Tapi masih cukup mudah untuk mengetahuinya. Formatnya adalah sebagai berikut:
https://github.com/
Jenis arsip dapat berupa tar.gz
atau zip
.
URL untuk cabang v2.x
dari spdlog adalah: https://github.com/gabime/spdlog/archive/refs/heads/v2.x.tar.gz
Tag serupa, tetapi dengan format ini:
https://github.com/
Tag v1.8.5
dari spdlog adalah ini:
https://github.com/gabime/spdlog/archive/refs/tags/v1.8.5.tar.gz
Persis seperti rilisnya.
Jika komit tertentu berisi kode yang Anda perlukan, komit tersebut didefinisikan sebagai berikut:
https://github.com/
Contoh: https://github.com/gabime/spdlog/archive/c1569a3d293a6b511ecb9c18b2298826c9578d9f.tar.gz
Cuplikan berikut menggambarkan penentuan hash SHA256 pada mesin linux menggunakan wget
dan sha256sum
:
wget https://github.com/gabime/spdlog/archive/refs/tags/v1.13.0.zip -O - | sha256sum