klogg - explorateur de journaux avancé et rapide
JNGL - bibliothèque de jeux 2D multiplateforme facile à utiliser
AALTITOAD - vérificateur et simulateur pour Tick Tock Automata
ZIMO-Électronique
ada - Analyseur d'URL rapide et conforme à WHATWG écrit en C++ moderne
codon - Un compilateur Python extensible hautes performances, sans surcharge, utilisant LLVM
CRoaring - Bitmaps Roaring en C (et C++), avec optimisations SIMD (AVX2, AVX-512 et NEON) : utilisés par Apache Doris, ClickHouse et StarRocks
Ces exemples montrent comment inclure certains projets bien connus avec CPM. Voir le wiki pour plus d'extraits.
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 est un projet de grande envergure et son téléchargement prendra un certain temps. L'utilisation de CPM_SOURCE_CACHE
est fortement recommandée. Le clonage déplace beaucoup plus de données qu'une archive source, donc cet exemple utilisera une version d'archive source compressée (tar.xz) de la page github de 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"
)
Pour un exemple pratique d'utilisation de CPM pour télécharger et configurer les bibliothèques Boost C++, voir ici.
# 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 ()
Pour un exemple complet d'utilisation de CPM pour télécharger et configurer Lua avec sol2, voir ici.
Consultez le répertoire d'exemples pour des exemples complets avec le code source et consultez le wiki pour de nombreux autres extraits d'exemples.
L’utilisation d’une archive source compressée est généralement beaucoup plus rapide qu’un clone superficiel. En option, vous pouvez vérifier l'intégrité à l'aide de SHA256 ou similaire. La définition du hachage est utile pour garantir qu'une source spécifique est importée, d'autant plus que les balises, les branches et les archives peuvent changer.
Voyons comment ajouter spdlog à un projet :
CPMAddPackage(
NAME spdlog
URL https://github.com/gabime/spdlog/archive/refs/tags/v1.12.0.zip
URL_HASH SHA256 =6174bf8885287422a6c6a0312eb8a30e8d22bcfcee7c48a6d02d1835d7769232
)
URL_HASH est facultatif, mais c'est une bonne idée pour les versions.
Les informations permettant de déterminer l'URL se trouvent ici.
Tous les progiciels ne fournissent pas de versions, mais pour ceux qui le font, elles peuvent être trouvées sur la page des versions du projet. Dans un navigateur, l'URL de la version spécifique est déterminée en cliquant avec le bouton droit et en sélectionnant Copy link address
(ou similaire) pour la version souhaitée. C'est la valeur que vous utiliserez dans la section URL.
Voici l'URL de la version 1.13.0 de spdlog au format zip : https://github.com/gabime/spdlog/archive/refs/tags/v1.13.0.zip
L'URL des branches n'est pas évidente depuis un navigateur. Mais cela reste assez simple à comprendre. Le format est le suivant :
https://github.com/
Le type d'archive peut être tar.gz
ou zip
.
L'URL de la branche v2.x
de spdlog est : https://github.com/gabime/spdlog/archive/refs/heads/v2.x.tar.gz
Les balises sont similaires, mais avec ce format :
https://github.com/
La balise v1.8.5
de spdlog est la suivante :
https://github.com/gabime/spdlog/archive/refs/tags/v1.8.5.tar.gz
Exactement comme la sortie.
Si un commit spécifique contient le code dont vous avez besoin, il est défini comme suit :
https://github.com/
Exemple : https://github.com/gabime/spdlog/archive/c1569a3d293a6b511ecb9c18b2298826c9578d9f.tar.gz
L'extrait suivant illustre la détermination du hachage SHA256 sur une machine Linux à l'aide de wget
et sha256sum
:
wget https://github.com/gabime/spdlog/archive/refs/tags/v1.13.0.zip -O - | sha256sum