mirror of
https://github.com/cpm-cmake/CPM.cmake.git
synced 2025-11-17 22:58:14 -05:00
* remove CPM_RESET in favor of CPM_OFFLINE * Update README.md (#5) * Update README.md * Update README.md * Update README.md
54 lines
2.2 KiB
Markdown
54 lines
2.2 KiB
Markdown
[](https://travis-ci.com/TheLartians/CPM)
|
|
|
|
# CPM
|
|
|
|
CPM is a minimalistic package manager written in Cmake based on the amazing [DownloadProject](https://github.com/Crascit/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
|
|
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.
|
|
|
|
```bash
|
|
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.
|