Files
CPM.cmake/README.md

51 lines
2.1 KiB
Markdown
Raw Normal View History

2019-04-09 15:54:11 +02:00
[![Build Status](https://travis-ci.com/TheLartians/CPM.svg?branch=master)](https://travis-ci.com/TheLartians/CPM)
2019-04-09 15:27:47 +02:00
# CPM
2019-04-09 16:04:04 +02:00
CPM is a minimalistic package manager written in Cmake using `find_package` and `FetchContent` as a fallback to download non locally installed packages.
2019-04-09 16:04:04 +02:00
# Usage
2019-04-09 16:35:15 +02:00
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.
2019-04-09 16:04:04 +02:00
```cmake
cmake_minimum_required(VERSION 3.14 FATAL_ERROR)
2019-04-09 16:04:04 +02:00
project(MyParser)
# add dependencies
include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/CPM.cmake)
CPMAddPackage(
NAME LarsParser
VERSION 1.4 # optional, used for find_package
2019-04-09 16:35:36 +02:00
GIT_REPOSITORY https://github.com/TheLartians/Parser.git
GIT_TAG v1.4 # optional if TAG matches v$VERSION
2019-04-09 16:04:04 +02:00
)
# add executable
set (CMAKE_CXX_STANDARD 17)
add_executable(my-parser my-parser.cpp)
target_link_libraries(cpm-test LarsParser)
```
2019-04-09 16:35:15 +02:00
# Adding CPM
2019-04-09 16:49:19 +02:00
2019-04-11 11:35:59 +02:00
To add CPM to your current project, simply include add `cmake/CPM.cmake` to your projects `cmake` directory. The command below will perform this automatically.
2019-04-09 16:49:19 +02:00
```bash
wget -O cmake/CPM.cmake https://raw.githubusercontent.com/TheLartians/CPM/master/cmake/CPM.cmake
2019-04-09 16:49:19 +02:00
```
# 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.
- **Cross-Plattform** As CPM adds projects as cmake subdirectories, it is compatible with all cmake toolchains and generators.
2019-04-09 16:40:32 +02:00
# Limitations
2019-04-09 16:35:15 +02:00
- **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.