vcpkg/docs/maintainers/ports/vcpkg-cmake/vcpkg_cmake_configure.md
nicole mazzuca 3426db05b9
[scripts-audit] Rollup PR 2021-02-26 (#16440)
* [scripts-audit rollup] PR #16419

* pull the cmake doc comment parsing out into its own function
* support cmake helper ports
* add real support for deprecation, as opposed to ad-hoc

* [scripts-audit rollup] PR #16192

* add a z_ in front of internal functions
* move internal functions out

set feature_vars again in parent scope

* [scripts-audit rollup] PR #16309

Audit vcpkg_copy_pdbs

* [scripts-audit rollup] PR #16304

* Fix usage, documentation

* [scripts-audit rollup] PR #16393

* [scripts-audit rollup] PR #16377

Deprecate `vcpkg_*_cmake` in favor of `vcpkg_cmake_*` from the
`vcpkg-cmake` port, as well as `vcpkg_fixup_cmake_targets`
in favor of `vcpkg_cmake_config_fixup` from the
`vcpkg-cmake-config` port.
2021-02-28 13:17:19 -08:00

3.3 KiB

vcpkg_cmake_configure

The latest version of this document lives in the vcpkg repo.

Configure a CMake buildsystem.

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.

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

Source

ports/vcpkg-cmake/vcpkg_cmake_configure.cmake