[vcpkg] Update vcpkg_check_features document (#7091)

* [oniguruma] Fix misusage of vcpkg_check_features

* [xsimd] Use vcpkg_check_features
This commit is contained in:
myd7349 2019-06-29 23:29:13 +08:00 committed by Curtis J Bezault
parent 62ed7c1731
commit a7bbee3152
6 changed files with 88 additions and 27 deletions

View File

@ -1,6 +1,6 @@
# vcpkg_check_features
Check if one or more features are part of the package installation.
Check if one or more features are a part of the package installation.
## Usage
```cmake
@ -11,12 +11,9 @@ vcpkg_check_features(
)
```
`vcpkg_check_features` accepts a list of (feature, output_variable) pairs.
The syntax is similar to the `PROPERTIES` argument of `set_target_properties`.
`vcpkg_check_features` accepts a list of (feature, output_variable) pairs. If a feature is specified, the corresponding output variable will be set as `ON`, or `OFF` otherwise. The syntax is similar to the `PROPERTIES` argument of `set_target_properties`.
`vcpkg_check_features` will create a variable `FEATURE_OPTIONS` in the
parent scope, which you can pass as a part of `OPTIONS` argument when
calling functions like `vcpkg_config_cmake`:
`vcpkg_check_features` will create a variable `FEATURE_OPTIONS` in the parent scope, which you can pass as a part of `OPTIONS` argument when calling functions like `vcpkg_config_cmake`:
```cmake
vcpkg_config_cmake(
SOURCE_PATH ${SOURCE_PATH}
@ -28,13 +25,46 @@ vcpkg_config_cmake(
```
## Notes
`vcpkg_check_features` is supposed to be called only once. Otherwise, the
`FEATURE_OPTIONS` variable set by a previous call will be overwritten.
```cmake
vcpkg_check_features(<feature> <output_variable>)
```
can be used as a replacement of:
```cmake
if(<feature> IN_LIST FEATURES)
set(<output_variable> ON)
else()
set(<output_variable> OFF)
endif()
```
However, if you have a feature that was checked like this before:
```cmake
if(<feature> IN_LIST FEATURES)
set(<output_variable> OFF)
else()
set(<output_variable> ON)
endif()
```
then you should not use `vcpkg_check_features` instead. [```oniguruma```](https://github.com/microsoft/vcpkg/blob/master/ports/oniguruma/portfile.cmake), for example, has a feature named `non-posix` which is checked with:
```cmake
if("non-posix" IN_LIST FEATURES)
set(ENABLE_POSIX_API OFF)
else()
set(ENABLE_POSIX_API ON)
endif()
```
and by replacing these code with:
```cmake
vcpkg_check_features(non-posix ENABLE_POSIX_API)
```
is totally wrong.
`vcpkg_check_features` is supposed to be called only once. Otherwise, the `FEATURE_OPTIONS` variable set by a previous call will be overwritten.
## Examples
* [czmq](https://github.com/microsoft/vcpkg/blob/master/ports/czmq/portfile.cmake)
* [oniguruma](https://github.com/microsoft/vcpkg/blob/master/ports/oniguruma/portfile.cmake)
* [xsimd](https://github.com/microsoft/vcpkg/blob/master/ports/xsimd/portfile.cmake)
* [xtensor](https://github.com/microsoft/vcpkg/blob/master/ports/xtensor/portfile.cmake)
## Source

View File

@ -1,5 +1,5 @@
Source: oniguruma
Version: 6.9.2-1
Version: 6.9.2-2
Description: Modern and flexible regular expressions library
Homepage: https://github.com/kkos/oniguruma

View File

@ -8,7 +8,11 @@ vcpkg_from_github(
HEAD_REF master
)
vcpkg_check_features(non-posix ENABLE_POSIX_API)
if("non-posix" IN_LIST FEATURES)
set(ENABLE_POSIX_API OFF)
else()
set(ENABLE_POSIX_API ON)
endif()
vcpkg_configure_cmake(
SOURCE_PATH ${SOURCE_PATH}

View File

@ -1,6 +1,7 @@
Source: xsimd
Version: 7.2.3
Version: 7.2.3-1
Description: Modern, portable C++ wrappers for SIMD intrinsics
Homepage: https://github.com/QuantStack/xsimd
Feature: xcomplex
Description: xtl complex support

View File

@ -5,16 +5,12 @@ include(vcpkg_common_functions)
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO QuantStack/xsimd
REF 7.2.3
REF 7.2.3
SHA512 fb34eeb585f6820499734f10f03a4efd0d9a9b4be56f9bee21f3564eb92be56e7abe7682e476fafaff4733939f33f91cb4ab9209140b19f7b740538853433532
HEAD_REF master
)
if("xcomplex" IN_LIST FEATURES)
set(ENABLE_XTL_COMPLEX ON)
else()
set(ENABLE_XTL_COMPLEX OFF)
endif()
vcpkg_check_features(xcomplex ENABLE_XTL_COMPLEX)
vcpkg_configure_cmake(
SOURCE_PATH ${SOURCE_PATH}

View File

@ -1,6 +1,6 @@
## # vcpkg_check_features
##
## Check if one or more features are part of the package installation.
## Check if one or more features are a part of the package installation.
##
## ## Usage
## ```cmake
@ -11,12 +11,9 @@
## )
## ```
##
## `vcpkg_check_features` accepts a list of (feature, output_variable) pairs.
## The syntax is similar to the `PROPERTIES` argument of `set_target_properties`.
## `vcpkg_check_features` accepts a list of (feature, output_variable) pairs. If a feature is specified, the corresponding output variable will be set as `ON`, or `OFF` otherwise. The syntax is similar to the `PROPERTIES` argument of `set_target_properties`.
##
## `vcpkg_check_features` will create a variable `FEATURE_OPTIONS` in the
## parent scope, which you can pass as a part of `OPTIONS` argument when
## calling functions like `vcpkg_config_cmake`:
## `vcpkg_check_features` will create a variable `FEATURE_OPTIONS` in the parent scope, which you can pass as a part of `OPTIONS` argument when calling functions like `vcpkg_config_cmake`:
## ```cmake
## vcpkg_config_cmake(
## SOURCE_PATH ${SOURCE_PATH}
@ -28,13 +25,46 @@
## ```
##
## ## Notes
## `vcpkg_check_features` is supposed to be called only once. Otherwise, the
## `FEATURE_OPTIONS` variable set by a previous call will be overwritten.
## ```cmake
## vcpkg_check_features(<feature> <output_variable>)
## ```
## can be used as a replacement of:
## ```cmake
## if(<feature> IN_LIST FEATURES)
## set(<output_variable> ON)
## else()
## set(<output_variable> OFF)
## endif()
## ```
##
## However, if you have a feature that was checked like this before:
## ```cmake
## if(<feature> IN_LIST FEATURES)
## set(<output_variable> OFF)
## else()
## set(<output_variable> ON)
## endif()
## ```
## then you should not use `vcpkg_check_features` instead. [```oniguruma```](https://github.com/microsoft/vcpkg/blob/master/ports/oniguruma/portfile.cmake), for example, has a feature named `non-posix` which is checked with:
## ```cmake
## if("non-posix" IN_LIST FEATURES)
## set(ENABLE_POSIX_API OFF)
## else()
## set(ENABLE_POSIX_API ON)
## endif()
## ```
## and by replacing these code with:
## ```cmake
## vcpkg_check_features(non-posix ENABLE_POSIX_API)
## ```
## is totally wrong.
##
## `vcpkg_check_features` is supposed to be called only once. Otherwise, the `FEATURE_OPTIONS` variable set by a previous call will be overwritten.
##
## ## Examples
##
## * [czmq](https://github.com/microsoft/vcpkg/blob/master/ports/czmq/portfile.cmake)
## * [oniguruma](https://github.com/microsoft/vcpkg/blob/master/ports/oniguruma/portfile.cmake)
## * [xsimd](https://github.com/microsoft/vcpkg/blob/master/ports/xsimd/portfile.cmake)
## * [xtensor](https://github.com/microsoft/vcpkg/blob/master/ports/xtensor/portfile.cmake)
function(vcpkg_check_features)
cmake_parse_arguments(_vcf "" "" "" ${ARGN})