vcpkg/docs/maintainers/vcpkg_fixup_cmake_targets.md
nicole mazzuca 6b117c9c7e
[vcpkg docs] Check for documentation generation in CI (#14614)
* [vcpkg docs] Change how documenting port functions works

Instead of using `##`, use comment blocks for documentation.

Also, add some minor docs and change RST -> MD
so we actually get docs generated.

* add CI stuff

* regenerate docs

* fix vcpkg_find_acquire_program to not use _execute_process
2020-12-01 13:37:26 -08:00

2.3 KiB

vcpkg_fixup_cmake_targets

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}>] [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.

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/<port>/*.exe on Windows. Transform all references matching /bin/* to /tools/<port>/* 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