Справочник по триплетам
В этой статье описываются переменные vcpkg, доступные для тройных файлов. Триплетный файл также может включать пользовательские переменные.
Ознакомьтесь с документацией по концепциям триплетов для высокоуровневого представления возможностей триплета.
Переменные
VCPKG_TARGET_ARCHITECTURE
Указывает архитектуру целевого компьютера.
Допустимые параметры: x86
, arm
arm64ec
s390x
riscv32
ppc64le
riscv64
loongarch32
arm64
x64
, , loongarch64
mips64
и .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, мы рассмотрим следующий алгоритм:
- Определите параметр из
VCPKG_VISUAL_STUDIO_PATH
триплета или переменнойVCPKG_VISUAL_STUDIO_PATH
среды или рассмотрите его неустановленный - Определите параметр из
VCPKG_PLATFORM_TOOLSET
тройной или рассмотрите его неустановленный - Сбор списка всех пар экземпляров Visual Studio со всеми наборами инструментов, доступными в этих экземплярах.
- Это упорядочено сначала по типу экземпляра (Stable, Prerelease, Legacy), а затем по версиям набора инструментов (версия 143, v142, v141, v140)
- Отфильтруйте список на основе параметров и
VCPKG_VISUAL_STUDIO_PATH
VCPKG_PLATFORM_TOOLSET
. - Выберите лучший оставшийся вариант
Путь должен быть абсолютным, отформатированным с обратной косой чертой и не имеет косой черты:
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.
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по