mirror of
https://github.com/microsoft/vcpkg.git
synced 2025-06-07 19:42:46 +08:00
[vcpkg] Update vcpkg_check_features document (#7091)
* [oniguruma] Fix misusage of vcpkg_check_features * [xsimd] Use vcpkg_check_features
This commit is contained in:
parent
62ed7c1731
commit
a7bbee3152
@ -1,6 +1,6 @@
|
|||||||
# vcpkg_check_features
|
# 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
|
## Usage
|
||||||
```cmake
|
```cmake
|
||||||
@ -11,12 +11,9 @@ vcpkg_check_features(
|
|||||||
)
|
)
|
||||||
```
|
```
|
||||||
|
|
||||||
`vcpkg_check_features` accepts a list of (feature, output_variable) pairs.
|
`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`.
|
||||||
The syntax is similar to the `PROPERTIES` argument of `set_target_properties`.
|
|
||||||
|
|
||||||
`vcpkg_check_features` will create a variable `FEATURE_OPTIONS` in the
|
`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`:
|
||||||
parent scope, which you can pass as a part of `OPTIONS` argument when
|
|
||||||
calling functions like `vcpkg_config_cmake`:
|
|
||||||
```cmake
|
```cmake
|
||||||
vcpkg_config_cmake(
|
vcpkg_config_cmake(
|
||||||
SOURCE_PATH ${SOURCE_PATH}
|
SOURCE_PATH ${SOURCE_PATH}
|
||||||
@ -28,13 +25,46 @@ vcpkg_config_cmake(
|
|||||||
```
|
```
|
||||||
|
|
||||||
## Notes
|
## Notes
|
||||||
`vcpkg_check_features` is supposed to be called only once. Otherwise, the
|
```cmake
|
||||||
`FEATURE_OPTIONS` variable set by a previous call will be overwritten.
|
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
|
## Examples
|
||||||
|
|
||||||
* [czmq](https://github.com/microsoft/vcpkg/blob/master/ports/czmq/portfile.cmake)
|
* [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)
|
* [xtensor](https://github.com/microsoft/vcpkg/blob/master/ports/xtensor/portfile.cmake)
|
||||||
|
|
||||||
## Source
|
## Source
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
Source: oniguruma
|
Source: oniguruma
|
||||||
Version: 6.9.2-1
|
Version: 6.9.2-2
|
||||||
Description: Modern and flexible regular expressions library
|
Description: Modern and flexible regular expressions library
|
||||||
Homepage: https://github.com/kkos/oniguruma
|
Homepage: https://github.com/kkos/oniguruma
|
||||||
|
|
||||||
|
@ -8,7 +8,11 @@ vcpkg_from_github(
|
|||||||
HEAD_REF master
|
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(
|
vcpkg_configure_cmake(
|
||||||
SOURCE_PATH ${SOURCE_PATH}
|
SOURCE_PATH ${SOURCE_PATH}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
Source: xsimd
|
Source: xsimd
|
||||||
Version: 7.2.3
|
Version: 7.2.3-1
|
||||||
Description: Modern, portable C++ wrappers for SIMD intrinsics
|
Description: Modern, portable C++ wrappers for SIMD intrinsics
|
||||||
|
Homepage: https://github.com/QuantStack/xsimd
|
||||||
|
|
||||||
Feature: xcomplex
|
Feature: xcomplex
|
||||||
Description: xtl complex support
|
Description: xtl complex support
|
||||||
|
@ -5,16 +5,12 @@ include(vcpkg_common_functions)
|
|||||||
vcpkg_from_github(
|
vcpkg_from_github(
|
||||||
OUT_SOURCE_PATH SOURCE_PATH
|
OUT_SOURCE_PATH SOURCE_PATH
|
||||||
REPO QuantStack/xsimd
|
REPO QuantStack/xsimd
|
||||||
REF 7.2.3
|
REF 7.2.3
|
||||||
SHA512 fb34eeb585f6820499734f10f03a4efd0d9a9b4be56f9bee21f3564eb92be56e7abe7682e476fafaff4733939f33f91cb4ab9209140b19f7b740538853433532
|
SHA512 fb34eeb585f6820499734f10f03a4efd0d9a9b4be56f9bee21f3564eb92be56e7abe7682e476fafaff4733939f33f91cb4ab9209140b19f7b740538853433532
|
||||||
HEAD_REF master
|
HEAD_REF master
|
||||||
)
|
)
|
||||||
|
|
||||||
if("xcomplex" IN_LIST FEATURES)
|
vcpkg_check_features(xcomplex ENABLE_XTL_COMPLEX)
|
||||||
set(ENABLE_XTL_COMPLEX ON)
|
|
||||||
else()
|
|
||||||
set(ENABLE_XTL_COMPLEX OFF)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
vcpkg_configure_cmake(
|
vcpkg_configure_cmake(
|
||||||
SOURCE_PATH ${SOURCE_PATH}
|
SOURCE_PATH ${SOURCE_PATH}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
## # vcpkg_check_features
|
## # 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
|
## ## Usage
|
||||||
## ```cmake
|
## ```cmake
|
||||||
@ -11,12 +11,9 @@
|
|||||||
## )
|
## )
|
||||||
## ```
|
## ```
|
||||||
##
|
##
|
||||||
## `vcpkg_check_features` accepts a list of (feature, output_variable) pairs.
|
## `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`.
|
||||||
## The syntax is similar to the `PROPERTIES` argument of `set_target_properties`.
|
|
||||||
##
|
##
|
||||||
## `vcpkg_check_features` will create a variable `FEATURE_OPTIONS` in the
|
## `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`:
|
||||||
## parent scope, which you can pass as a part of `OPTIONS` argument when
|
|
||||||
## calling functions like `vcpkg_config_cmake`:
|
|
||||||
## ```cmake
|
## ```cmake
|
||||||
## vcpkg_config_cmake(
|
## vcpkg_config_cmake(
|
||||||
## SOURCE_PATH ${SOURCE_PATH}
|
## SOURCE_PATH ${SOURCE_PATH}
|
||||||
@ -28,13 +25,46 @@
|
|||||||
## ```
|
## ```
|
||||||
##
|
##
|
||||||
## ## Notes
|
## ## Notes
|
||||||
## `vcpkg_check_features` is supposed to be called only once. Otherwise, the
|
## ```cmake
|
||||||
## `FEATURE_OPTIONS` variable set by a previous call will be overwritten.
|
## 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
|
## ## Examples
|
||||||
##
|
##
|
||||||
## * [czmq](https://github.com/microsoft/vcpkg/blob/master/ports/czmq/portfile.cmake)
|
## * [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)
|
## * [xtensor](https://github.com/microsoft/vcpkg/blob/master/ports/xtensor/portfile.cmake)
|
||||||
function(vcpkg_check_features)
|
function(vcpkg_check_features)
|
||||||
cmake_parse_arguments(_vcf "" "" "" ${ARGN})
|
cmake_parse_arguments(_vcf "" "" "" ${ARGN})
|
||||||
|
Loading…
Reference in New Issue
Block a user