klogg: explorador de registros rápido y avanzado
JNGL: biblioteca de juegos 2D multiplataforma fácil de usar
AALTITOAD - verificador y simulador de Tick Tock Automata
ZIMO-Elektronik
ada: analizador de URL rápido y compatible con WHATWG escrito en C++ moderno
codon: un compilador de Python extensible, de alto rendimiento y sin gastos generales que utiliza LLVM
CRoaring: mapas de bits rugientes en C (y C++), con optimizaciones SIMD (AVX2, AVX-512 y NEON): utilizado por Apache Doris, ClickHouse y StarRocks
Estos ejemplos demuestran cómo incluir algunos proyectos conocidos con CPM. Consulte la wiki para obtener más fragmentos.
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 es un proyecto grande y tardará un poco en descargarse. Se recomienda encarecidamente utilizar CPM_SOURCE_CACHE
. La clonación mueve muchos más datos que un archivo fuente, por lo que este ejemplo utilizará una versión de archivo fuente comprimido (tar.xz) de la página 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"
)
Para ver un ejemplo práctico del uso de CPM para descargar y configurar las bibliotecas Boost C++, consulte aquí.
# 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 ()
Para ver un ejemplo completo sobre el uso de CPM para descargar y configurar lua con sol2, consulte aquí.
Consulte el directorio de ejemplos para obtener ejemplos completos con código fuente y consulte la wiki para obtener muchos más fragmentos de ejemplo.
Usar un archivo fuente comprimido suele ser mucho más rápido que un clon superficial. Opcionalmente, puede verificar la integridad utilizando SHA256 o similar. Configurar el hash es útil para garantizar que se importe una fuente específica, especialmente porque las etiquetas, ramas y archivos pueden cambiar.
Veamos cómo agregar spdlog a un proyecto:
CPMAddPackage(
NAME spdlog
URL https://github.com/gabime/spdlog/archive/refs/tags/v1.12.0.zip
URL_HASH SHA256 =6174bf8885287422a6c6a0312eb8a30e8d22bcfcee7c48a6d02d1835d7769232
)
URL_HASH es opcional, pero es una buena idea para los lanzamientos.
La información para determinar la URL se encuentra aquí.
No todos los paquetes de software ofrecen versiones, pero aquellos que sí las ofrecen, se pueden encontrar en la página de versiones del proyecto. En un navegador, la URL de la versión específica se determina haciendo clic derecho y seleccionando Copy link address
(o similar) para la versión deseada. Este es el valor que utilizará en la sección URL.
Esta es la URL de la versión 1.13.0 de spdlog en formato zip: https://github.com/gabime/spdlog/archive/refs/tags/v1.13.0.zip
La URL de las sucursales no es obvia desde un navegador. Pero todavía es bastante fácil resolverlo. El formato es el siguiente:
https://github.com/
El tipo de archivo puede ser tar.gz
o zip
.
La URL para la rama v2.x
de spdlog es: https://github.com/gabime/spdlog/archive/refs/heads/v2.x.tar.gz
Las etiquetas son similares, pero con este formato:
https://github.com/
La etiqueta v1.8.5
de spdlog es esta:
https://github.com/gabime/spdlog/archive/refs/tags/v1.8.5.tar.gz
Exactamente como el lanzamiento.
Si una confirmación específica contiene el código que necesita, se define de la siguiente manera:
https://github.com/
Ejemplo: https://github.com/gabime/spdlog/archive/c1569a3d293a6b511ecb9c18b2298826c9578d9f.tar.gz
El siguiente fragmento ilustra la determinación del hash SHA256 en una máquina Linux usando wget
y sha256sum
:
wget https://github.com/gabime/spdlog/archive/refs/tags/v1.13.0.zip -O - | sha256sum