mirror of
https://github.com/cpm-cmake/CPM.cmake.git
synced 2025-11-22 04:07:49 -05:00
Compare commits
7 Commits
v0.27.2-on
...
v0.27.4
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
aeef56ea85 | ||
|
|
4271d5981f | ||
|
|
d17500b0be | ||
|
|
5e0c3855c7 | ||
|
|
f96cff720e | ||
|
|
c3c7e2d9a3 | ||
|
|
30b98af416 |
9
.github/workflows/publish.yaml
vendored
9
.github/workflows/publish.yaml
vendored
@@ -13,13 +13,16 @@ jobs:
|
||||
- uses: actions/checkout@v1
|
||||
|
||||
- name: Set CPM version by tag
|
||||
run: sed "s/0.27.2-development-version/${GITHUB_REF/refs\/tags\/v}/g" cmake/CPM.cmake > CPM.cmake
|
||||
run: |
|
||||
mkdir dist
|
||||
sed "s/0.27.2-development-version/${GITHUB_REF/refs\/tags\/v}/g" cmake/CPM.cmake > dist/CPM.cmake
|
||||
sed "s/0.27.2-development-version/${GITHUB_REF/refs\/tags\/v}/g" cmake/get_cpm.cmake > dist/get_cpm.cmake
|
||||
|
||||
- name: Upload CPM.cmake to release
|
||||
uses: svenstaro/upload-release-action@v1-release
|
||||
with:
|
||||
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
file: CPM.cmake
|
||||
asset_name: CPM.cmake
|
||||
tag: ${{ github.ref }}
|
||||
file: dist/*.cmake
|
||||
file_glob: true
|
||||
overwrite: true
|
||||
|
||||
12
README.md
12
README.md
@@ -1,7 +1,7 @@
|
||||
[](https://travis-ci.com/TheLartians/CPM.cmake)
|
||||
[](https://github.com/TheLartians/CPM.cmake/actions)
|
||||
[](https://github.com/TheLartians/CPM.cmake/actions)
|
||||
[](https://github.com/TheLartians/CPM.cmake/actions)
|
||||
[](https://github.com/TheLartians/CPM.cmake/actions) [](https://gitter.im/TheLartians/CPM.cmake?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
||||
|
||||
<p align="center">
|
||||
<img src="./logo/CPM.png" height="100" />
|
||||
@@ -49,6 +49,8 @@ After calling `CPMAddPackage` or `CPMFindPackage`, the following variables are d
|
||||
The difference between `CPMFindPackage` and `CPMAddPackage` is that `CPMFindPackage` will try to find a local dependency via CMake's `find_package` and fallback to `CPMAddPackage` if the dependency is not found.
|
||||
This behaviour can be also modified globally via [CPM options](#options).
|
||||
|
||||
See [this medium article](https://medium.com/swlh/cpm-an-awesome-dependency-manager-for-c-with-cmake-3c53f4376766) for a short tutorial on using CPM.cmake.
|
||||
|
||||
## Full CMakeLists Example
|
||||
|
||||
```cmake
|
||||
@@ -77,14 +79,15 @@ See the [examples directory](https://github.com/TheLartians/CPM.cmake/tree/maste
|
||||
|
||||
## Adding CPM
|
||||
|
||||
To add CPM to your current project, simply add `cmake/CPM.cmake` to your project's `cmake` directory. The command below will perform this automatically.
|
||||
To add CPM to your current project, simply add the [latest release](https://github.com/TheLartians/CPM.cmake/releases/latest) of `CPM.cmake` or `get_cpm.cmake` to your project's `cmake` directory.
|
||||
The command below will perform this automatically.
|
||||
|
||||
```bash
|
||||
mkdir -p cmake
|
||||
wget -O cmake/CPM.cmake https://github.com/TheLartians/CPM.cmake/releases/latest/download/CPM.cmake
|
||||
wget -O cmake/CPM.cmake https://github.com/TheLartians/CPM.cmake/releases/latest/download/get_cpm.cmake
|
||||
```
|
||||
|
||||
You can also use CMake to download CPM for you. See the [wiki](https://github.com/TheLartians/CPM.cmake/wiki/Downloading-CPM.cmake-in-CMake) for more details.
|
||||
You can also download CPM.cmake directly from your project's `CMakeLists.txt`. See the [wiki](https://github.com/TheLartians/CPM.cmake/wiki/Downloading-CPM.cmake-in-CMake) for more details.
|
||||
|
||||
## Updating CPM
|
||||
|
||||
@@ -348,6 +351,7 @@ 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
|
||||
|
||||
@@ -252,6 +252,7 @@ function(CPMAddPackage)
|
||||
NAME ${CPM_ARGS_NAME}
|
||||
SOURCE_DIR ${PACKAGE_SOURCE}
|
||||
FORCE True
|
||||
OPTIONS ${CPM_ARGS_OPTIONS}
|
||||
)
|
||||
cpm_export_variables(${CPM_ARGS_NAME})
|
||||
return()
|
||||
|
||||
19
cmake/get_cpm.cmake
Normal file
19
cmake/get_cpm.cmake
Normal file
@@ -0,0 +1,19 @@
|
||||
set(CPM_DOWNLOAD_VERSION 0.27.2-development-version)
|
||||
|
||||
if(CPM_SOURCE_CACHE)
|
||||
set(CPM_DOWNLOAD_LOCATION "${CPM_SOURCE_CACHE}/cpm/CPM_${CPM_DOWNLOAD_VERSION}.cmake")
|
||||
elseif(DEFINED ENV{CPM_SOURCE_CACHE})
|
||||
set(CPM_DOWNLOAD_LOCATION "$ENV{CPM_SOURCE_CACHE}/cpm/CPM_${CPM_DOWNLOAD_VERSION}.cmake")
|
||||
else()
|
||||
set(CPM_DOWNLOAD_LOCATION "${CMAKE_BINARY_DIR}/cmake/CPM_${CPM_DOWNLOAD_VERSION}.cmake")
|
||||
endif()
|
||||
|
||||
if(NOT (EXISTS ${CPM_DOWNLOAD_LOCATION}))
|
||||
message(STATUS "Downloading CPM.cmake to ${CPM_DOWNLOAD_LOCATION}")
|
||||
file(DOWNLOAD
|
||||
https://github.com/TheLartians/CPM.cmake/releases/download/v${CPM_DOWNLOAD_VERSION}/CPM.cmake
|
||||
${CPM_DOWNLOAD_LOCATION}
|
||||
)
|
||||
endif()
|
||||
|
||||
include(${CPM_DOWNLOAD_LOCATION})
|
||||
@@ -17,6 +17,7 @@ if (lua_ADDED)
|
||||
# lua has no CMakeLists, 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
|
||||
|
||||
19
examples/spdlog/CMakeLists.txt
Normal file
19
examples/spdlog/CMakeLists.txt
Normal file
@@ -0,0 +1,19 @@
|
||||
cmake_minimum_required(VERSION 3.14 FATAL_ERROR)
|
||||
|
||||
project(CPMSpdlogExample)
|
||||
|
||||
# ---- Dependencies ----
|
||||
|
||||
include(../../cmake/CPM.cmake)
|
||||
|
||||
CPMAddPackage(
|
||||
NAME spdlog
|
||||
GITHUB_REPOSITORY gabime/spdlog
|
||||
VERSION 1.7.0
|
||||
)
|
||||
|
||||
# ---- Executable ----
|
||||
|
||||
add_executable(CPMSpdlogExample "main.cpp")
|
||||
set_target_properties(CPMSpdlogExample PROPERTIES CXX_STANDARD 17)
|
||||
target_link_libraries(CPMSpdlogExample spdlog)
|
||||
6
examples/spdlog/main.cpp
Normal file
6
examples/spdlog/main.cpp
Normal file
@@ -0,0 +1,6 @@
|
||||
#include <spdlog/spdlog.h>
|
||||
|
||||
int main() {
|
||||
spdlog::info("Hello, world!");
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user