mirror of
https://github.com/cpm-cmake/CPM.cmake.git
synced 2025-11-27 14:50:30 -05:00
Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ede60451a9 | ||
|
|
5961f9f9fb | ||
|
|
69e9ff3766 | ||
|
|
3fee69c894 |
26
README.md
26
README.md
@@ -227,6 +227,22 @@ cmake --build build --target cpm-update-package-lock
|
|||||||
|
|
||||||
See the [wiki](https://github.com/cpm-cmake/CPM.cmake/wiki/Package-lock) for more info.
|
See the [wiki](https://github.com/cpm-cmake/CPM.cmake/wiki/Package-lock) for more info.
|
||||||
|
|
||||||
|
## Private repositories and CI
|
||||||
|
|
||||||
|
When using CPM.cmake with private repositories, there may be a need to provide an [access token](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token) to be able to clone other projects. Instead of providing the token in CMake, we recommend to provide the regular URL and use [git-config](https://git-scm.com/docs/git-config) to rewrite the URLs to include the token.
|
||||||
|
|
||||||
|
As an example, you could include one of the following in your CI script.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Github
|
||||||
|
git config --global url."https://${USERNAME}:${TOKEN}@github.com".insteadOf "https://github.com"
|
||||||
|
```
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# GitLab
|
||||||
|
git config --global url."https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.com".insteadOf "https://gitlab.com"
|
||||||
|
```
|
||||||
|
|
||||||
## Built with CPM.cmake
|
## Built with CPM.cmake
|
||||||
|
|
||||||
Some amazing projects that are built using the CPM.cmake package manager.
|
Some amazing projects that are built using the CPM.cmake package manager.
|
||||||
@@ -266,6 +282,14 @@ If you know others, feel free to add them here through a PR.
|
|||||||
<p align="center"><b>liblava - Modern Vulkan library</b></p>
|
<p align="center"><b>liblava - Modern Vulkan library</b></p>
|
||||||
</a>
|
</a>
|
||||||
</td>
|
</td>
|
||||||
|
<td>
|
||||||
|
<a href="https://github.com/variar/klogg">
|
||||||
|
<p align="center">
|
||||||
|
<img src="https://github.com/variar/klogg/blob/master/src/app/images/hicolor/scalable/klogg.svg" alt="klogg" width="100pt" />
|
||||||
|
</p>
|
||||||
|
<p align="center"><b>klogg - fast advanced log explorer</b></p>
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
@@ -283,7 +307,7 @@ CPMAddPackage("gh:catchorg/Catch2@2.5.0")
|
|||||||
### [Range-v3](https://github.com/ericniebler/range-v3)
|
### [Range-v3](https://github.com/ericniebler/range-v3)
|
||||||
|
|
||||||
```Cmake
|
```Cmake
|
||||||
CPMAddPackage("gh:ericniebler/range-v3#0.11.0")
|
CPMAddPackage("gh:ericniebler/range-v3#0.12.0")
|
||||||
```
|
```
|
||||||
|
|
||||||
### [Yaml-cpp](https://github.com/jbeder/yaml-cpp)
|
### [Yaml-cpp](https://github.com/jbeder/yaml-cpp)
|
||||||
|
|||||||
@@ -650,6 +650,20 @@ function(CPMAddPackage)
|
|||||||
list(APPEND CPM_ARGS_UNPARSED_ARGUMENTS DOWNLOAD_COMMAND ${CPM_ARGS_DOWNLOAD_COMMAND})
|
list(APPEND CPM_ARGS_UNPARSED_ARGUMENTS DOWNLOAD_COMMAND ${CPM_ARGS_DOWNLOAD_COMMAND})
|
||||||
elseif(DEFINED CPM_ARGS_SOURCE_DIR)
|
elseif(DEFINED CPM_ARGS_SOURCE_DIR)
|
||||||
list(APPEND CPM_ARGS_UNPARSED_ARGUMENTS SOURCE_DIR ${CPM_ARGS_SOURCE_DIR})
|
list(APPEND CPM_ARGS_UNPARSED_ARGUMENTS SOURCE_DIR ${CPM_ARGS_SOURCE_DIR})
|
||||||
|
if(NOT IS_ABSOLUTE ${CPM_ARGS_SOURCE_DIR})
|
||||||
|
# Expand `CPM_ARGS_SOURCE_DIR` relative path. This is important because EXISTS doesn't work
|
||||||
|
# for relative paths.
|
||||||
|
get_filename_component(
|
||||||
|
source_directory ${CPM_ARGS_SOURCE_DIR} REALPATH BASE_DIR ${CMAKE_CURRENT_BINARY_DIR}
|
||||||
|
)
|
||||||
|
else()
|
||||||
|
set(source_directory ${CPM_ARGS_SOURCE_DIR})
|
||||||
|
endif()
|
||||||
|
if(NOT EXISTS ${source_directory})
|
||||||
|
string(TOLOWER ${CPM_ARGS_NAME} lower_case_name)
|
||||||
|
# remove timestamps so CMake will re-download the dependency
|
||||||
|
file(REMOVE_RECURSE "${CPM_FETCHCONTENT_BASE_DIR}/${lower_case_name}-subbuild")
|
||||||
|
endif()
|
||||||
elseif(CPM_SOURCE_CACHE AND NOT CPM_ARGS_NO_CACHE)
|
elseif(CPM_SOURCE_CACHE AND NOT CPM_ARGS_NO_CACHE)
|
||||||
string(TOLOWER ${CPM_ARGS_NAME} lower_case_name)
|
string(TOLOWER ${CPM_ARGS_NAME} lower_case_name)
|
||||||
set(origin_parameters ${CPM_ARGS_UNPARSED_ARGUMENTS})
|
set(origin_parameters ${CPM_ARGS_UNPARSED_ARGUMENTS})
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ project(CPMRangev3Example)
|
|||||||
|
|
||||||
include(../../cmake/CPM.cmake)
|
include(../../cmake/CPM.cmake)
|
||||||
|
|
||||||
CPMAddPackage("gh:ericniebler/range-v3#0.11.0")
|
CPMAddPackage("gh:ericniebler/range-v3#0.12.0")
|
||||||
|
|
||||||
# ---- Executable ----
|
# ---- Executable ----
|
||||||
|
|
||||||
|
|||||||
36
test/integration/test_remove_source_dir.rb
Normal file
36
test/integration/test_remove_source_dir.rb
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
require_relative './lib'
|
||||||
|
|
||||||
|
class RemoveSourceDir < IntegrationTest
|
||||||
|
def test_remove_source_dir
|
||||||
|
prj = make_project 'using-adder'
|
||||||
|
|
||||||
|
prj.create_lists_from_default_template package: <<~PACK
|
||||||
|
CPMAddPackage(
|
||||||
|
NAME testpack-adder
|
||||||
|
GITHUB_REPOSITORY cpm-cmake/testpack-adder
|
||||||
|
VERSION 1.0.0
|
||||||
|
OPTIONS "ADDER_BUILD_TESTS OFF"
|
||||||
|
SOURCE_DIR testpack-adder
|
||||||
|
)
|
||||||
|
PACK
|
||||||
|
|
||||||
|
# configure and build
|
||||||
|
assert_success prj.configure
|
||||||
|
assert_success prj.build
|
||||||
|
|
||||||
|
# source_dir is populated
|
||||||
|
assert_true File.exist?(File.join(prj.bin_dir, 'testpack-adder'))
|
||||||
|
|
||||||
|
# source_dir is deleted by user
|
||||||
|
FileUtils.remove_dir(File.join(prj.bin_dir, 'testpack-adder'), true)
|
||||||
|
assert_false File.exist?(File.join(prj.bin_dir, 'testpack-adder'))
|
||||||
|
|
||||||
|
# configure and build with missing source_dir to fetch new content
|
||||||
|
assert_success prj.configure
|
||||||
|
assert_success prj.build
|
||||||
|
|
||||||
|
# source_dir is populated
|
||||||
|
assert_true File.exist?(File.join(prj.bin_dir, 'testpack-adder'))
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
Reference in New Issue
Block a user