Files
CPM.cmake/README.md
Lars Melchior e4bbd6e215 remove CPM_RESET in favor of CPM_OFFLINE (#6)
* remove CPM_RESET in favor of CPM_OFFLINE

* Update README.md (#5)

* Update README.md

* Update README.md

* Update README.md
2019-04-10 16:43:57 +02:00

2.2 KiB

Build Status

CPM

CPM is a minimalistic package manager written in Cmake based on the amazing DownloadProject script. It is extremely easy to use and drastically simplifies the inclusion of other Cmake-based projects from github.

Usage

To add a new dependency to your project simply add the Projects target name, the git URL and the version. If the git tag for this version does not match the pattern v$VERSION, then the exact branch or tag can be specified with the GIT_TAG argument.

cmake_minimum_required(VERSION 3.5 FATAL_ERROR)

project(MyParser)

# add dependencies
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/CPM.cmake)

CPMAddPackage(
  NAME LarsParser
  VERSION 1.4
  GIT_REPOSITORY https://github.com/TheLartians/Parser.git
  GIT_TAG master # optional
)

# add executable
set (CMAKE_CXX_STANDARD 17)
add_executable(my-parser my-parser.cpp)
target_link_libraries(cpm-test LarsParser)

Offline mode

After including CPM CMake will try to update remote repositories at every new buld. To continue working offline, set the parameter CPM_OFFLINE=On.

Installation

To add CPM to your current project, copy the scripts in the cmake directory into you current project project. The command below will perform this automatically.

wget -qO- https://github.com/TheLartians/CPM/releases/download/v0.4/cmake.zip | bsdtar -xvf-

Advantages

  • Auto handle dependencies Users of your projects do not need to worry about dependencies, everything is handled automatically.
  • Reproducable builds Using git tags it is ensured that a project will always be in the same state everywhere.
  • No installation required No need to install any third-party package managers. Just copy the files from the CMake directory and you're good to go.

Limitations

  • First version used In diamond-shaped dependency graphs (e.g. A depends on C(v1.1) and A depends on B depends on C(v1.2)) the first added dependency will be used (in this case C@1.1).
  • No auto-update To update a dependency, version numbers or git tags in the cmake scripts must be adapted manually.