2021-03-01 05:17:19 +08:00
# vcpkg_cmake_configure
2021-03-11 01:56:07 +08:00
The latest version of this document lives in the [vcpkg repo ](https://github.com/Microsoft/vcpkg/blob/master/docs/maintainers/ports/vcpkg-cmake/vcpkg_cmake_configure.md ).
2021-03-01 05:17:19 +08:00
Configure a CMake buildsystem.
```cmake
vcpkg_cmake_configure(
SOURCE_PATH < source-path >
[LOGFILE_BASE < logname-base > ]
[DISABLE_PARALLEL_CONFIGURE]
[NO_CHARSET_FLAG]
[WINDOWS_USE_MSBUILD]
[GENERATOR < generator > ]
[OPTIONS
< configure-setting > ...]
[OPTIONS_RELEASE
< configure-setting > ...]
[OPTIONS_DEBUG
< configure-setting > ...]
)
```
`vcpkg_cmake_configure` configures a CMake build system for use with
`vcpkg_cmake_buildsystem_build` and `vcpkg_cmake_buildsystem_install` .
`source-path` is where the source is located; by convention,
this is usually `${SOURCE_PATH}` , which is set by one of the `vcpkg_from_*` functions.
This function configures the build system for both Debug and Release builds by default,
assuming that `VCPKG_BUILD_TYPE` is not set; if it is, then it will only configure for
that build type.
Use the `OPTIONS` argument to set the configure settings for both release and debug,
and use `OPTIONS_RELEASE` and `OPTIONS_DEBUG` to set the configure settings for
release only and debug only repsectively.
By default, when possible, `vcpkg_cmake_configure` uses [ninja-build]
as its build system. If the `WINDOWS_USE_MSBUILD` argument is passed, then
`vcpkg_cmake_configure` will use a Visual Studio generator on Windows;
on every other platform, `vcpkg_cmake_configure` just uses Ninja.
[ninja-build]: https://ninja-build.org/
Additionally, one may pass the specific generator a port should use with `GENERATOR` .
This is useful if some project-specific buildsystem
has been wrapped in a CMake build system that doesn't perform an actual build.
If used for this purpose, it should be set to `"NMake Makefiles"` .
`vcpkg_cmake_buildsystem_build` and `install` do not support this being set to anything
except for NMake.
For libraries which cannot be configured in parallel,
pass the `DISABLE_PARALLEL_CONFIGURE` flag. This is needed, for example,
if the library's build system writes back into the source directory during configure.
This also disables the `CMAKE_DISABLE_SOURCE_CHANGES` option.
By default, this function adds flags to `CMAKE_C_FLAGS` and `CMAKE_CXX_FLAGS`
which set the default character set to utf-8 for MSVC.
If the library sets its own code page, pass the `NO_CHARSET_FLAG` option.
`LOGFILE_BASE` is used to set the base of the logfile names;
by default, this is `config` , and thus the logfiles end up being something like
`config-x86-windows-dbg.log` . You can set it to anything you like;
if you set it to `config-the-first` ,
you'll get something like `config-the-first-x86-windows.dbg.log` .
## Notes
This command supplies many common arguments to CMake. To see the full list, examine the source.
## Examples
* [zlib ](https://github.com/Microsoft/vcpkg/blob/master/ports/zlib/portfile.cmake )
* [cpprestsdk ](https://github.com/Microsoft/vcpkg/blob/master/ports/cpprestsdk/portfile.cmake )
* [poco ](https://github.com/Microsoft/vcpkg/blob/master/ports/poco/portfile.cmake )
* [opencv ](https://github.com/Microsoft/vcpkg/blob/master/ports/opencv/portfile.cmake )
## Source
[ports/vcpkg-cmake/vcpkg\_cmake\_configure.cmake ](https://github.com/Microsoft/vcpkg/blob/master/ports/vcpkg-cmake/vcpkg_cmake_configure.cmake )