vcpkg/docs/maintainers/ports/vcpkg-cmake/vcpkg_cmake_configure.md
Kai Pastor dd42206f86
[vcpkg-cmake] Remove cmake generator support restrictions (#22626)
* Stop failing in build step on unknown generators

CMake already completed configuration using the given generator.

* Support parallel build with Unix Makefiles

* Documentation fixes for vcpkg_cmake port

* `vcpkg_cmake_configure`: links to `opencv4` as example instead of
  `opencv` which is an empty port
* `vcpkg_cmake_install`: fix link to `vcpkg_cmake_build`'s docs
* `vcpkg_cmake_build`: fix link to `vcpkg_cmake_install`'s docs

* Extra script audit

* Update versions

* Regenerate docs

* [vcpkg-cmake] support Xcode parallel build

* no/parallel_args when CMake Generator is  "Xcode"

* Update versions

* CI

Co-authored-by: Martin Hořeňovský <martin.horenovsky@gmail.com>
Co-authored-by: luncliff <dong-ha-park@linecorp.com>
2022-01-28 11:30:37 -08:00

3.8 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>...]
    [MAYBE_UNUSED_VARIABLES
        <option-name>...]
)

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 respectively.

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.

This function makes certain that all options passed in are used by the underlying CMake build system. If there are options that might be unused, perhaps on certain platforms, pass those variable names to MAYBE_UNUSED_VARIABLES. For example:

vcpkg_cmake_configure(
    ...
    OPTIONS
        -DBUILD_EXAMPLE=OFF
    ...
    MAYBE_UNUSED_VARIABLES
        BUILD_EXAMPLE
)

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