mirror of
https://github.com/cpm-cmake/CPM.cmake.git
synced 2025-11-18 15:17:30 -05:00
feature: allow URI to use shorthand syntax with additional options (#617)
* feature: add URI to use shorthand syntax with additional options
This allows to combine the shorthand syntax with URI and additional arguments:
```
CPMAddPackage(URI "gh:nlohmann/json@3.9.1" OPTIONS "JSON_BUildTests OFF")
```
This is much shorter than the longer syntax way of writing:
```
CPMAddPackage(
NAME nlohmann_json
VERSION 3.9.1
GITHUB_REPOSITORY nlohmann/json
OPTIONS
"JSON_BuildTests OFF"
)
```
* fix: use shorthand syntax in examples
* test: add test for shorthand syntax with options
* doc: extend README mentioning shorthand syntax with options
* feat: URI keyword also sets EXCLUDE_FROM AND SYSTEM
* doc: more explicit about the behavior of URI
* doc: adjust README accordingly to PR-Review
* test: fix inline documentation of test_simple
* move URI comment
* added new test for shorthand syntax
* reset simple test
* add that URI must be the first argument
---------
Co-authored-by: Lars Melchior <lars.melchior@gmail.com>
This commit is contained in:
committed by
GitHub
parent
97023e8b97
commit
d7614381ab
@@ -594,14 +594,6 @@ endfunction()
|
||||
function(CPMAddPackage)
|
||||
cpm_set_policies()
|
||||
|
||||
list(LENGTH ARGN argnLength)
|
||||
if(argnLength EQUAL 1)
|
||||
cpm_parse_add_package_single_arg("${ARGN}" ARGN)
|
||||
|
||||
# The shorthand syntax implies EXCLUDE_FROM_ALL and SYSTEM
|
||||
set(ARGN "${ARGN};EXCLUDE_FROM_ALL;YES;SYSTEM;YES;")
|
||||
endif()
|
||||
|
||||
set(oneValueArgs
|
||||
NAME
|
||||
FORCE
|
||||
@@ -624,10 +616,26 @@ function(CPMAddPackage)
|
||||
|
||||
set(multiValueArgs URL OPTIONS DOWNLOAD_COMMAND PATCHES)
|
||||
|
||||
list(LENGTH ARGN argnLength)
|
||||
|
||||
# Parse single shorthand argument
|
||||
if(argnLength EQUAL 1)
|
||||
cpm_parse_add_package_single_arg("${ARGN}" ARGN)
|
||||
|
||||
# The shorthand syntax implies EXCLUDE_FROM_ALL and SYSTEM
|
||||
set(ARGN "${ARGN};EXCLUDE_FROM_ALL;YES;SYSTEM;YES;")
|
||||
|
||||
# Parse URI shorthand argument
|
||||
elseif(argnLength GREATER 1 AND "${ARGV0}" STREQUAL "URI")
|
||||
list(REMOVE_AT ARGN 0 1) # remove "URI gh:<...>@version#tag"
|
||||
cpm_parse_add_package_single_arg("${ARGV1}" ARGV0)
|
||||
|
||||
set(ARGN "${ARGV0};EXCLUDE_FROM_ALL;YES;SYSTEM;YES;${ARGN}")
|
||||
endif()
|
||||
|
||||
cmake_parse_arguments(CPM_ARGS "" "${oneValueArgs}" "${multiValueArgs}" "${ARGN}")
|
||||
|
||||
# Set default values for arguments
|
||||
|
||||
if(NOT DEFINED CPM_ARGS_VERSION)
|
||||
if(DEFINED CPM_ARGS_GIT_TAG)
|
||||
cpm_get_version_from_git_tag("${CPM_ARGS_GIT_TAG}" CPM_ARGS_VERSION)
|
||||
|
||||
Reference in New Issue
Block a user