vcpkg/docs/maintainers/vcpkg_fixup_cmake_targets.md

2.7 KiB

vcpkg_fixup_cmake_targets

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

This function has been deprecated in favor of vcpkg_cmake_config_fixup from the vcpkg-cmake-config port.

Merge release and debug CMake targets and configs to support multiconfig generators.

Additionally corrects common issues with targets, such as absolute paths and incorrectly placed binaries.

Usage

vcpkg_fixup_cmake_targets([CONFIG_PATH <share/${PORT}>] 
                          [TARGET_PATH <share/${PORT}>] 
                          [TOOLS_PATH <tools/${PORT}>]
                          [DO_NOT_DELETE_PARENT_CONFIG_PATH])

Parameters

CONFIG_PATH

Subpath currently containing *.cmake files subdirectory (like lib/cmake/${PORT}). Should be relative to ${CURRENT_PACKAGES_DIR}.

Defaults to share/${PORT}.

TARGET_PATH

Subpath to which the above *.cmake files should be moved. Should be relative to ${CURRENT_PACKAGES_DIR}. This needs to be specified if the port name differs from the find_package() name.

Defaults to share/${PORT}.

DO_NOT_DELETE_PARENT_CONFIG_PATH

By default the parent directory of CONFIG_PATH is removed if it is named "cmake". Passing this option disable such behavior, as it is convenient for ports that install more than one CMake package configuration file.

NO_PREFIX_CORRECTION

Disables the correction of_IMPORT_PREFIX done by vcpkg due to moving the targets. Currently the correction does not take into account how the files are moved and applies I rather simply correction which in some cases will yield the wrong results.

TOOLS_PATH

Define the base path to tools. Default: tools/<PORT>

Notes

Transform all /debug/<CONFIG_PATH>/*targets-debug.cmake files and move them to /<TARGET_PATH>. Removes all /debug/<CONFIG_PATH>/*targets.cmake and /debug/<CONFIG_PATH>/*config.cmake.

Transform all references matching /bin/*.exe to /${TOOLS_PATH}/*.exe on Windows. Transform all references matching /bin/* to /${TOOLS_PATH}/* on other platforms.

Fix ${_IMPORT_PREFIX} in auto generated targets to be one folder deeper. Replace ${CURRENT_INSTALLED_DIR} with ${_IMPORT_PREFIX} in configs and targets.

Examples

Source

scripts/cmake/vcpkg_fixup_cmake_targets.cmake