klogg - เครื่องมือสำรวจบันทึกขั้นสูงที่รวดเร็ว
JNGL - ไลบรารีเกม 2D ข้ามแพลตฟอร์มที่ใช้งานง่าย
AALTITOAD - เครื่องมือตรวจสอบและจำลองสำหรับ Tick Tock Automata
ZIMO-อิเล็กทรอนิกส์
ada - ตัวแยกวิเคราะห์ URL ที่รวดเร็วและสอดคล้องกับ WHATWG เขียนด้วยภาษา C ++ สมัยใหม่
codon - คอมไพเลอร์ Python ประสิทธิภาพสูง ไม่มีโอเวอร์เฮด และขยายได้โดยใช้ LLVM
CRoaring - บิตแมปคำรามใน C (และ C++) พร้อมการเพิ่มประสิทธิภาพ SIMD (AVX2, AVX-512 และ NEON): ใช้โดย Apache Doris, ClickHouse และ StarRocks
ตัวอย่างเหล่านี้สาธิตวิธีรวมโปรเจ็กต์ที่มีชื่อเสียงบางโปรเจ็กต์เข้ากับ CPM ดูวิกิสำหรับตัวอย่างเพิ่มเติม
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
การโคลนจะย้ายข้อมูลมากกว่าไฟล์เก็บถาวรต้นทาง ดังนั้นตัวอย่างนี้จะใช้ไฟล์เก็บถาวรต้นทางที่บีบอัด (tar.xz) จากหน้า 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"
)
สำหรับตัวอย่างการทำงานของการใช้ CPM เพื่อดาวน์โหลดและกำหนดค่า Boost C++ Libraries ดูที่นี่
# 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 ดูที่นี่
ดูไดเร็กทอรีตัวอย่างสำหรับตัวอย่างทั้งหมดพร้อมซอร์สโค้ด และดูวิกิเพื่อดูตัวอย่างข้อมูลอื่นๆ อีกมากมาย
การใช้ไฟล์เก็บถาวรต้นฉบับที่บีบอัดมักจะเร็วกว่าโคลนแบบตื้นมาก หรือคุณสามารถตรวจสอบความสมบูรณ์โดยใช้ 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
นี่คือ URL สำหรับ spdlog release 1.13.0 ในรูปแบบ zip: https://github.com/gabime/spdlog/archive/refs/tags/v1.13.0.zip
URL สำหรับสาขาไม่ชัดเจนจากเบราว์เซอร์ แต่ก็ยังค่อนข้างง่ายที่จะเข้าใจ รูปแบบมีดังนี้:
https://github.com/
ประเภทไฟล์เก็บถาวรอาจเป็นประเภทใดประเภทหนึ่ง tar.gz
หรือ zip
URL สำหรับสาขา v2.x
ของ spdlog คือ: https://github.com/gabime/spdlog/archive/refs/heads/v2.x.tar.gz
แท็กจะคล้ายกันแต่มีรูปแบบดังนี้:
https://github.com/
แท็ก v1.8.5
ของ spdlog คือ:
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
ตัวอย่างต่อไปนี้แสดงให้เห็นถึงการพิจารณาแฮช SHA256 บนเครื่อง linux โดยใช้ wget
และ sha256sum
:
wget https://github.com/gabime/spdlog/archive/refs/tags/v1.13.0.zip -O - | sha256sum