Поделиться через


vcpkg_cmake_config_fixup

Объединение и исправление целевых объектов выпуска и отладки CMake для поддержки генераторов нескольких конфигураций.

Использование

vcpkg_cmake_config_fixup(
    [PACKAGE_NAME <name>]
    [CONFIG_PATH <config-directory>]
    [TOOLS_PATH <tools/${PORT}>]
    [DO_NOT_DELETE_PARENT_CONFIG_PATH]
    [NO_PREFIX_CORRECTION]
)

Чтобы использовать эту функцию, необходимо зависеть от вспомогательного порта vcpkg-cmake-config:

"dependencies": [
  {
    "name": "vcpkg-cmake-config",
    "host": true
  }
]

Кроме того, исправляет распространенные проблемы с целевыми объектами, например абсолютными путями и неправильно помещенными двоичными файлами.

Для многих портов vcpkg_cmake_config_fixup() самостоятельно должно работать, так как PACKAGE_NAME по умолчанию используется значение и CONFIG_PATH значение share/${PACKAGE_NAME}по умолчанию${PORT}. Для портов, в которых переданное find_package имя пакета отличается от имени порта, PACKAGE_NAME следует изменить вместо этого имя. Для портов, из которых нельзя задать каталог *config.cmake файлов, используйте CONFIG_PATH каталог, из которого приходят файлы.

По умолчанию родительский каталог CONFIG_PATH удаляется, если он называется cmake. DO_NOT_DELETE_PARENT_CONFIG_PATH Передача параметра отключает такое поведение, так как удобно для портов, устанавливающих несколько файлов конфигурации пакета CMake.

Параметр NO_PREFIX_CORRECTION отключает исправление _IMPORT_PREFIX vcpkg из-за перемещения файлов конфигурации. В настоящее время исправление не учитывает способ перемещения файлов и применяет довольно простое исправление, которое в некоторых случаях даст неправильные результаты.

Принцип работы

  1. Перемещается /debug/<CONFIG_PATH>/*targets-debug.cmake в /share/${PACKAGE_NAME}.
  2. Преобразует все ссылки, соответствующие /bin/*.exe /${TOOLS_PATH}/*.exe Windows.
  3. Преобразует все ссылки, соответствующие /bin/* /${TOOLS_PATH}/* другим платформам.
  4. ${_IMPORT_PREFIX} Исправления в автоматически созданных целевых объектах.
  5. Заменяет ${CURRENT_INSTALLED_DIR} ${_IMPORT_PREFIX} его в конфигурациях.
  6. Слияние INTERFACE_LINK_LIBRARIES конфигураций выпуска и отладки.
  7. Заменяется ${VCPKG_IMPORT_PREFIX} целевыми объектами${CURRENT_INSTALLED_DIR}.
  8. Удаляет /debug/<CONFIG_PATH>/*config.cmake.

Примеры

Исходный код

ports/vcpkg-cmake-config/vcpkg_cmake_config_fixup.cmake