klogg - 빠른 고급 로그 탐색기
JNGL - 사용하기 쉬운 크로스 플랫폼 2D 게임 라이브러리
AALTITOAD - Tick Tock Automata용 검증기 및 시뮬레이터
ZIMO-전자공학
ada - 최신 C++로 작성된 WHATWG 규격의 빠른 URL 파서
codon - LLVM을 사용하는 고성능, 오버헤드가 없는 확장 가능한 Python 컴파일러
CRoaring - SIMD(AVX2, AVX-512 및 NEON) 최적화가 포함된 C(및 C++)의 활발한 비트맵: 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
사용하는 것이 좋습니다. 복제는 소스 아카이브보다 훨씬 더 많은 데이터를 이동하므로 이 샘플에서는 Boost의 github 페이지에 있는 압축 소스 아카이브(tar.xz) 릴리스를 사용합니다.
# 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++ 라이브러리를 다운로드하고 구성하기 위해 CPM을 사용하는 작업 예제는 여기를 참조하세요.
# 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을 사용하여 sol2로 lua를 다운로드하고 구성하는 방법에 대한 전체 예는 여기를 참조하세요.
소스 코드가 포함된 전체 예제는 예제 디렉터리를 참조하고 더 많은 예제 조각은 위키를 확인하세요.
압축된 소스 아카이브를 사용하는 것은 일반적으로 얕은 복제보다 훨씬 빠릅니다. 선택적으로 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 섹션에서 사용할 값입니다.
이것은 zip 형식의 spdlog 릴리스 1.13.0에 대한 URL입니다: https://github.com/gabime/spdlog/archive/refs/tags/v1.13.0.zip
브랜치의 URL은 브라우저에서 명확하지 않습니다. 그러나 그것을 알아내는 것은 여전히 매우 쉽습니다. 형식은 다음과 같습니다.
https://github.com/
아카이브 유형은 tar.gz
또는 zip
중 하나일 수 있습니다.
spdlog v2.x
분기의 URL은 https://github.com/gabime/spdlog/archive/refs/heads/v2.x.tar.gz
입니다.
태그는 유사하지만 형식은 다음과 같습니다.
https://github.com/
spdlog의 태그 v1.8.5
는 다음과 같습니다.
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
다음 스니펫은 wget
및 sha256sum
사용하여 Linux 시스템에서 SHA256 해시를 확인하는 방법을 보여줍니다.
wget https://github.com/gabime/spdlog/archive/refs/tags/v1.13.0.zip -O - | sha256sum