klogg - مستكشف السجل المتقدم السريع
JNGL - مكتبة ألعاب ثنائية الأبعاد سهلة الاستخدام ومتعددة المنصات
AALTITOAD - أداة التحقق والمحاكاة لـ Tick Tock Automata
زيمو الكترونيك
ada - محلل URL سريع ومتوافق مع WHATWG ومكتوب بلغة C++ الحديثة
كودون - مترجم بايثون عالي الأداء، بدون أي حمل، وقابل للتوسيع باستخدام 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) من صفحة Boost's github.
# 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"
)
للحصول على مثال عملي لاستخدام التكلفة لكل ألف ظهور لتنزيل مكتبات 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 ()
للحصول على مثال كامل حول استخدام التكلفة لكل ألف ظهور لتنزيل 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 1.13.0 بتنسيق مضغوط: 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