Справочник по триплетам

В этой статье описываются переменные vcpkg, доступные для тройных файлов. Триплетный файл также может включать пользовательские переменные.

Ознакомьтесь с документацией по концепциям триплетов для высокоуровневого представления возможностей триплета.

Переменные

VCPKG_TARGET_ARCHITECTURE

Указывает архитектуру целевого компьютера.

Допустимые параметры: x86, armarm64ecs390xriscv32ppc64leriscv64loongarch32arm64x64, , loongarch64mips64и .wasm32

VCPKG_CRT_LINKAGE

Указывает нужную компоновку CRT (для MSVC).

Допустимые параметры: dynamic и static.

VCPKG_LIBRARY_LINKAGE

Указывает предпочитаемую компоновку библиотеки.

Допустимые параметры: dynamic и static. Библиотеки могут игнорировать этот параметр, если они не поддерживают предпочтительный тип компоновки.

VCPKG_BUILD_TYPE

Это значение можно задать для release сборки версий портов только для выпуска. По умолчанию это значение пусто. Если это значение пустое vcpkg, сборка и отладка конфигураций портов.

VCPKG_CMAKE_SYSTEM_NAME

Указывает целевую платформу.

Допустимые параметры включают любое имя системы CMake, например:

  • Пустой (классический компьютер Windows по устаревшим причинам)
  • WindowsStore(универсальная платформа Windows)
  • MinGW (Минималистский GNU для Windows)
  • Darwin (Mac OSX)
  • iOS (iOS)
  • Linux (Linux)
  • Emscripten (WebAssembly)

VCPKG_CMAKE_SYSTEM_VERSION

Указывает версию системы целевой платформы.

Это поле является необязательным, и при наличии будет передано в сборку как CMAKE_SYSTEM_VERSION.

См. также документацию по CMake для CMAKE_SYSTEM_VERSION

VCPKG_CHAINLOAD_TOOLCHAIN_FILE

Указывает альтернативный файл цепочки инструментов CMake для использования.

Это (если задано) переопределит всю другую логику обнаружения компилятора. По умолчанию файл цепочки инструментов выбирается из scripts/toolchains/ соответствующей платформы.

См. также документацию по CMake для файлов цепочки инструментов.

VCPKG_CXX_FLAGS

Задает дополнительные флаги компилятора, которые будут использоваться при использовании VCPKG_CHAINLOAD_TOOLCHAIN_FILE.

Этот параметр также имеет формы для флагов, относящихся к конфигурации, и флагов языка C:

  • VCPKG_CXX_FLAGS
  • VCPKG_CXX_FLAGS_DEBUG
  • VCPKG_CXX_FLAGS_RELEASE
  • VCPKG_C_FLAGS
  • VCPKG_C_FLAGS_DEBUG
  • VCPKG_C_FLAGS_RELEASE

VCPKG_LINKER_FLAGS

Задает дополнительные флаги компоновщика, которые будут использоваться при создании динамических библиотек и исполняемых файлов в отсутствие VCPKG_CHAINLOAD_TOOLCHAIN_FILE.

Этот параметр также имеет формы для флагов, относящихся к конфигурации:

  • VCPKG_LINKER_FLAGS
  • VCPKG_LINKER_FLAGS_DEBUG
  • VCPKG_LINKER_FLAGS_RELEASE

VCPKG_MESON_CONFIGURE_OPTIONS

Задайте дополнительные параметры настройки Meson, добавленные к команде настройки (в vcpkg_configure_meson).

Это поле необязательно.

Также доступно в качестве конкретного VCPKG_MESON_CONFIGURE_OPTIONS_DEBUG типа сборки и VCPKG_MESON_CONFIGURE_OPTIONS_RELEASE переменных.

VCPKG_MESON_NATIVE_FILE_RELEASE

Укажите дополнительный зависимый от конфигурации файл в виде мезонного кросс-собственного файла. Можно использовать для переопределения параметров, предоставляемых vcpkg, так как он будет передаваться после того, как созданные vcpkg кросс-собственные файлы передаются.

Особенно полезно предоставить собственные build_machine и host_machine записи.

VCPKG_MESON_NATIVE_FILE_DEBUG

См . VCPKG_MESON_NATIVE_FILE_RELEASE.

VCPKG_MESON_CROSS_FILE_RELEASE

См . VCPKG_MESON_NATIVE_FILE_RELEASE.

VCPKG_MESON_CROSS_FILE_DEBUG

См . VCPKG_MESON_NATIVE_FILE_RELEASE.

VCPKG_CMAKE_CONFIGURE_OPTIONS

Задает дополнительные параметры настройки CMake, которые добавляются в команду настройки (в vcpkg_cmake_configure).

Это поле необязательно.

Также доступно в качестве конкретного VCPKG_CMAKE_CONFIGURE_OPTIONS_DEBUG типа сборки и VCPKG_CMAKE_CONFIGURE_OPTIONS_RELEASE переменных.

VCPKG_CONFIGURE_MAKE_OPTIONS

Задайте дополнительные параметры настройки automake/autoconf, которые добавляются в команду настройки (в vcpkg_configure_make).

Это поле необязательно.

Например, чтобы пропустить определенные проверка libtool, которые могут завершиться ошибкой:

set(VCPKG_CONFIGURE_MAKE_OPTIONS "lt_cv_deplibs_check_method=pass_all")

Также доступно в качестве конкретного VCPKG_CONFIGURE_MAKE_OPTIONS_DEBUG типа сборки и VCPKG_CONFIGURE_MAKE_OPTIONS_RELEASE переменных.

VCPKG_HASH_ADDITIONAL_FILES

Список файлов, которые необходимо включить в вычисление хэшей пакета ABI.

Это поле необязательно.

Объявите все файлы, влияющие на содержимое пакета и должны быть учтены в вычислении хэша ABI. Например:

  • Файлы, включенные (через include(filepath)) в настраиваемые триплеты и цепочки инструментов.
  • Файлы, определенные в VCPKG_MESON_(NATIVE|CROSS)_FILE_<CONFIG>

Рассматриваются только содержимое и порядок файлов, пути файлов не влияют на хэш ABI.

set(VCPKG_HASH_ADDITIONAL_FILES
  "${CMAKE_CURRENT_LIST_DIR}/file1.cmake"
  "${CMAKE_CURRENT_LIST_DIR}/meson-cross.txt"
)

VCPKG_DEP_INFO_OVERRIDE_VARS

Примечание.

В этом разделе рассматривается экспериментальная функция vcpkg, которая может изменяться или удаляться в любое время.

Заменяет вычисленный по умолчанию список терминов "Поддерживает" по умолчанию.

Этот параметр (если задан) переопределит набор терминов по умолчанию, используемых для оценки выражения платформы.

Дополнительные сведения см. в документации по полю файла манифеста "supports" .

Примечание.

Этот список извлекается с помощью вспомогательной vcpkg_get_dep_info функции.

VCPKG_DISABLE_COMPILER_TRACKING

Предупреждение

Включение этого параметра не рекомендуется, так как оно может привести к несовместимости ABI в восстановленных двоичных пакетах. Дополнительные сведения см. в документации по кэшированию двоичных файлов

Если этот параметр имеет значение TRUE, ONили 1компилятор не будет отслеживаться как часть abis пакета.

Это приведет к повторному использованию сборки двоичных кэширований из более старых или более новых компиляторов.

Переменные, относящиеся к Windows

VCPKG_ENV_PASSTHROUGH

Указывает vcpkg разрешить дополнительные переменные среды в процессе сборки.

В Windows vcpkg создает пакеты в специальной чистой среде, изолированной от текущей командной строки, чтобы обеспечить надежность сборки и согласованность. Этот параметр триплета можно задать в списке дополнительных переменных среды, которые будут добавлены в чистую среду. Значения этих переменных среды будут хэшированы в abi пакета, чтобы передать переменные среды без отслеживания abi, см. в разделе VCPKG_ENV_PASSTHROUGH_UNTRACKED.

См. vcpkg env также команду для проверки точной среды, которая будет использоваться.

Примечание.

Этот список извлекается с помощью вспомогательной vcpkg_get_tags функции.

VCPKG_ENV_PASSTHROUGH_UNTRACKED

Указывает vcpkg разрешить дополнительные переменные среды в процесс сборки без отслеживания abi.

См. раздел VCPKG_ENV_PASSTHROUGH.

VCPKG_VISUAL_STUDIO_PATH

Указывает используемую установку Visual Studio.

Чтобы выбрать точное сочетание экземпляра и набора инструментов Visual Studio, мы рассмотрим следующий алгоритм:

  1. Определите параметр из VCPKG_VISUAL_STUDIO_PATH триплета или переменной VCPKG_VISUAL_STUDIO_PATHсреды или рассмотрите его неустановленный
  2. Определите параметр из VCPKG_PLATFORM_TOOLSET тройной или рассмотрите его неустановленный
  3. Сбор списка всех пар экземпляров Visual Studio со всеми наборами инструментов, доступными в этих экземплярах.
    • Это упорядочено сначала по типу экземпляра (Stable, Prerelease, Legacy), а затем по версиям набора инструментов (версия 143, v142, v141, v140)
  4. Отфильтруйте список на основе параметров и VCPKG_VISUAL_STUDIO_PATHVCPKG_PLATFORM_TOOLSET.
  5. Выберите лучший оставшийся вариант

Путь должен быть абсолютным, отформатированным с обратной косой чертой и не имеет косой черты:

set(VCPKG_VISUAL_STUDIO_PATH "C:\\Program Files (x86)\\Microsoft Visual Studio\\Preview\\Community")

VCPKG_PLATFORM_TOOLSET

Указывает цепочку инструментов компилятора C/C++ на основе VS++ для использования.

См VCPKG_VISUAL_STUDIO_PATH . полный алгоритм выбора.

Допустимые параметры:

  • Набор инструментов платформы Visual Studio 2022 .v143
  • Набор инструментов платформы Visual Studio 2019 .v142
  • Набор инструментов платформы Visual Studio 2017 .v141
  • Набор инструментов платформы Visual Studio 2015 .v140

VCPKG_PLATFORM_TOOLSET_VERSION

Указывает подробную цепочку инструментов компилятора MSVC C/C++ для использования.

По умолчанию [VCPKG_PLATFORM_TOOLSET] всегда выбирает последнюю установленную дополнительную версию выбранного набора инструментов. Если требуется более подробная степень детализации, можно использовать эту переменную. Допустимые значения: например, 14.25 или 14.27.29110.

VCPKG_LOAD_VCVARS_ENV

Определяет, будет ли vcpkg искать и использовать экземпляр Visual Studio в составе тройной среды.

По умолчанию это для ON тройных наборов Windows, которые не указывают VCPKG_CHAINLOAD_TOOLCHAIN_FILE. При указании VCPKG_CHAINLOAD_TOOLCHAIN_FILEтройных и тройных значений, отличных от Windows, это значение OFFпо умолчанию.

Переменные Linux

VCPKG_FIXUP_ELF_RPATH

Если для этого параметра задано значение (true|1|on), vcpkg добавит $ORIGIN и $ORIGIN/<path_relative_to_lib> в RUNPATH заголовок исполняемых файлов и общих библиотек. Это позволяет перемещать пакеты в Linux.

Переменные MacOS

VCPKG_INSTALL_NAME_DIR

Задает имя установки, используемое при создании динамических библиотек macOS. Значение по умолчанию: @rpath. Дополнительные сведения см. в документации по CMake для CMAKE_INSTALL_NAME_DIR .

VCPKG_OSX_DEPLOYMENT_TARGET

Задает минимальную версию macOS для скомпилированных двоичных файлов. Это также изменяет версии пакета SDK для платформы macOS, которые CMake будет искать. Дополнительные сведения см. в документации по CMake для CMAKE_OSX_DEPLOYMENT_TARGET .

VCPKG_OSX_SYSROOT

Задайте имя или путь пакета SDK платформы macOS, который будет использоваться CMake. Дополнительные сведения см. в документации по CMake для CMAKE_OSX_SYSROOT .

VCPKG_OSX_ARCHITECTURES

Задайте целевую архитектуру macOS или iOS, которая будет использоваться CMake. Дополнительные сведения см. в документации по CMake для CMAKE_OSX_ARCHITECTURES .

Настройка для каждого порта

Макрос PORT CMake будет задан при интерпретации тройного файла и может использоваться для изменения параметров (например VCPKG_LIBRARY_LINKAGE, на основе порта).

Пример:

set(VCPKG_LIBRARY_LINKAGE static)
if(PORT MATCHES "qt5-")
    set(VCPKG_LIBRARY_LINKAGE dynamic)
endif()

Это создаст все qt5-* библиотеки как библиотеки DLL, но все остальные библиотеки в качестве статической библиотеки.

Пример в реальном проекте см. в разделе https://github.com/Intelight/vcpkg/blob/master/triplets/x86-windows-mixed.cmake.