aboutsummaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
Diffstat (limited to 'docs')
-rw-r--r--docs/maintainers/vcpkg_check_features.md48
1 files changed, 39 insertions, 9 deletions
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(<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