From a7bbee315276d37344a464eb95b02ca20ff1b0c2 Mon Sep 17 00:00:00 2001 From: myd7349 Date: Sat, 29 Jun 2019 23:29:13 +0800 Subject: [vcpkg] Update vcpkg_check_features document (#7091) * [oniguruma] Fix misusage of vcpkg_check_features * [xsimd] Use vcpkg_check_features --- docs/maintainers/vcpkg_check_features.md | 48 ++++++++++++++++++++++++++------ 1 file changed, 39 insertions(+), 9 deletions(-) (limited to 'docs') diff --git a/docs/maintainers/vcpkg_check_features.md b/docs/maintainers/vcpkg_check_features.md index ca2debf85..46ee9051a 100644 --- a/docs/maintainers/vcpkg_check_features.md +++ b/docs/maintainers/vcpkg_check_features.md @@ -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( ) +``` +can be used as a replacement of: +```cmake +if( IN_LIST FEATURES) + set( ON) +else() + set( OFF) +endif() +``` + +However, if you have a feature that was checked like this before: +```cmake +if( IN_LIST FEATURES) + set( OFF) +else() + set( 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 -- cgit v1.2.3