Триплетные переменные
В этой статье описываются переменные vcpkg, доступные для тройных файлов. Триплетный файл также может включать пользовательские переменные.
Ознакомьтесь с документацией по концепциям триплетов для высокоуровневого представления возможностей триплета.
Указывает архитектуру целевого компьютера.
Допустимые параметры: x86
, arm
arm64ec
s390x
riscv32
ppc64le
riscv64
loongarch32
arm64
x64
, , loongarch64
mips64
и .wasm32
Указывает нужную компоновку CRT (для MSVC).
Допустимые параметры: dynamic
и static
.
Указывает предпочитаемую компоновку библиотеки.
Допустимые параметры: dynamic
и static
. Библиотеки могут игнорировать этот параметр, если они не поддерживают предпочтительный тип компоновки.
Это значение можно задать для release
сборки версий портов только для выпуска.
По умолчанию это значение пусто. Если это значение пустое vcpkg, сборка и отладка конфигураций портов.
Указывает целевую платформу.
Допустимые параметры включают любое имя системы CMake, например:
- Пустой (классический компьютер Windows по устаревшим причинам)
WindowsStore
(универсальная платформа Windows)MinGW
(Минималистский GNU для Windows)Darwin
(Mac OSX)iOS
(iOS)Linux
(Linux)Emscripten
(WebAssembly)
Указывает версию системы целевой платформы.
Это поле является необязательным, и при наличии будет передано в сборку как CMAKE_SYSTEM_VERSION
.
См. также документацию по CMake для CMAKE_SYSTEM_VERSION
Указывает альтернативный файл цепочки инструментов CMake для использования.
Это (если задано) переопределит всю другую логику обнаружения компилятора. По умолчанию файл цепочки инструментов выбирается из scripts/toolchains/
соответствующей платформы.
Примечание
Чтобы создать пользовательский файл цепочки инструментов, лучше всего начать с включения существующей цепочки ${VCPKG_ROOT}/scripts/toolchains
инструментов и расширения его. Это гарантирует, что необходимые переменные, заданные исполняемым файлом vcpkg, например VCPKG_TARGET_ARCHITECTURE
, VCPKG_CXX_FLAGS
VCPKG_LINKER_FLAGS
и другими переменными, перенаправляются в CMake.
См. также документацию по CMake для файлов цепочки инструментов.
Задает дополнительные флаги компилятора, которые будут использоваться при использовании 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_CXX_FLAGS
, необходимо также задать VCPKG_C_FLAGS
и наоборот.
То же самое относится к флагам, зависящим от конфигурации. Эти переменные принимают строку флагов компилятора с разделителями пробелами:
set(VCPKG_CXX_FLAGS "/wd4996 -D_CRT_SECURE_NO_WARNINGS")
set(VCPKG_C_FLAGS "/wd4996 -D_CRT_SECURE_NO_WARNINGS")
Задает дополнительные флаги компоновщика, которые будут использоваться при создании динамических библиотек и исполняемых файлов в отсутствие VCPKG_CHAINLOAD_TOOLCHAIN_FILE
.
Этот параметр также имеет формы для флагов, относящихся к конфигурации:
VCPKG_LINKER_FLAGS
VCPKG_LINKER_FLAGS_DEBUG
VCPKG_LINKER_FLAGS_RELEASE
Задайте дополнительные параметры настройки Meson, добавленные к команде настройки (в vcpkg_configure_meson
).
Это поле необязательно.
Также доступно в качестве конкретного VCPKG_MESON_CONFIGURE_OPTIONS_DEBUG
типа сборки и VCPKG_MESON_CONFIGURE_OPTIONS_RELEASE
переменных.
Укажите дополнительный зависимый от конфигурации файл в виде мезонного кросс-собственного файла. Можно использовать для переопределения параметров, предоставляемых vcpkg, так как он будет передаваться после того, как созданные vcpkg кросс-собственные файлы передаются.
Особенно полезно предоставить собственные build_machine и host_machine записи.
См . VCPKG_MESON_NATIVE_FILE_RELEASE.
См . VCPKG_MESON_NATIVE_FILE_RELEASE.
См . VCPKG_MESON_NATIVE_FILE_RELEASE.
Задает дополнительные параметры настройки CMake, которые добавляются в команду настройки (в vcpkg_cmake_configure
).
Это поле необязательно.
Также доступно в качестве конкретного VCPKG_CMAKE_CONFIGURE_OPTIONS_DEBUG
типа сборки и VCPKG_CMAKE_CONFIGURE_OPTIONS_RELEASE
переменных.
Задайте дополнительные параметры настройки 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
переменных.
Список файлов, которые необходимо включить в вычисление хэшей пакета 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"
)
Список файлов CMake, которые необходимо включить после выполнения portfile.cmake.
Это поле необязательно.
Содержимое и порядок файлов используются для хэша ABI, пути файлов не влияют на хэш ABI.
set(VCPKG_POST_PORTFILE_INCLUDES
"${CMAKE_CURRENT_LIST_DIR}/file1.cmake"
"${CMAKE_CURRENT_LIST_DIR}/file2.cmake"
)
Примечание
В этом разделе рассматривается экспериментальная функция vcpkg, которая может изменяться или удаляться в любое время.
Заменяет вычисленный по умолчанию список терминов "Поддерживает" по умолчанию.
Этот параметр (если задан) переопределит набор терминов по умолчанию, используемых для оценки выражения платформы.
Дополнительные сведения см. в документации по полю файла манифеста "supports"
.
Примечание
Этот список извлекается с помощью вспомогательной vcpkg_get_dep_info
функции.
Предупреждение
Включение этого параметра не рекомендуется, так как оно может привести к несовместимости ABI в восстановленных двоичных пакетах. Дополнительные сведения см. в документации по кэшированию двоичных файлов
Если этот параметр имеет значение TRUE
, ON
или 1
компилятор не будет отслеживаться как часть abis пакета.
Это приведет к повторному использованию двоичных кэширований из более старых или более новых компиляторов.
Указывает vcpkg разрешить дополнительные переменные среды в процессе сборки.
В Windows vcpkg создает пакеты в специальной чистой среде, изолированной от текущей командной строки, чтобы обеспечить надежность сборки и согласованность. Этот параметр триплета можно задать в списке дополнительных переменных среды, которые будут добавлены в чистую среду. Значения этих переменных среды будут хэшированы в abi пакета, чтобы передать переменные среды без отслеживания abi, см. в разделе VCPKG_ENV_PASSTHROUGH_UNTRACKED
.
См. vcpkg env
также команду для проверки точной среды, которая будет использоваться.
Примечание
Этот список извлекается с помощью вспомогательной vcpkg_get_tags
функции.
Указывает vcpkg разрешить дополнительные переменные среды в процесс сборки без отслеживания abi.
См. раздел VCPKG_ENV_PASSTHROUGH
.
Указывает используемую установку 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")
Указывает цепочку инструментов компилятора на основе Visual Studio на основе C/C++.
См VCPKG_VISUAL_STUDIO_PATH
. полный алгоритм выбора.
Допустимые параметры:
- Набор инструментов платформы Visual Studio 2022 .
v143
- Набор инструментов платформы Visual Studio 2019 .
v142
- Набор инструментов платформы Visual Studio 2017 .
v141
- Набор инструментов платформы Visual Studio 2015 .
v140
Указывает подробную цепочку инструментов компилятора MSVC C/C++ для использования.
По умолчанию всегда выбирает последнюю установленную дополнительную версию VCPKG_PLATFORM_TOOLSET
выбранного набора инструментов. Если требуется более подробная степень детализации, можно использовать эту переменную. Можно указать частичный или полный номер версии. Допустимые значения: например, 14.25
или 14.27.29110
.
Определяет, будет ли vcpkg искать и использовать экземпляр Visual Studio в составе тройной среды.
По умолчанию это для ON
тройных наборов Windows, которые не указывают VCPKG_CHAINLOAD_TOOLCHAIN_FILE
. При указании VCPKG_CHAINLOAD_TOOLCHAIN_FILE
тройных и тройных значений, отличных от Windows, это значение OFF
по умолчанию.
Если для этого параметра задано значение (true|1|on), vcpkg добавит $ORIGIN
и $ORIGIN/<path_relative_to_lib>
в RUNPATH
заголовок исполняемых файлов и общих библиотек. Это позволяет перемещать пакеты в Linux.
Задает имя установки, используемое при создании динамических библиотек macOS. Значение по умолчанию: @rpath
. Дополнительные сведения см. в документации по CMake для CMAKE_INSTALL_NAME_DIR .
Гарантирует, что двоичные файлы Mach-O, созданные vcpkg, перемещаются с помощью относительных имен установки и путей выполнения.
Если задано значение ON
:
- Изменяет абсолютное
LC_LC_ID_DYLIB
поле@rpath/<library>
для двоичных файлов общей библиотеки; - Изменяет абсолютные
LC_RPATH
поля на относительные@loader_path/<relative/path/to/library>
для исполняемых и общих двоичных файлов библиотеки.
Важно!
Эта функция включена по умолчанию.VCPKG_TARGET_IS_OSX
TRUE
Чтобы отключить, явно задайте VCPKG_FIXUP_MACHO_RPATH
значение OFF
в тройном файле.
Дополнительные сведения о динамических библиотеках в macOS см. по следующим ссылкам:
- Идентификация динамической библиотеки
- Настройка динамической библиотеки уровня "Стандартный" для приложений
- Альтернатива полного пути динамической библиотеки
- Внедрение нестандартных структур кода в пакет
Задает минимальную версию macOS для скомпилированных двоичных файлов. Это также изменяет версии пакета SDK для платформы macOS CMake. Дополнительные сведения см. в документации по CMake для CMAKE_OSX_DEPLOYMENT_TARGET .
Задайте имя или путь пакета SDK платформы macOS, который будет использоваться CMake. Дополнительные сведения см. в документации по CMake для CMAKE_OSX_SYSROOT .
Задайте целевую архитектуру 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-*
порты как динамические библиотеки, но все остальные порты в виде статической библиотеки.
Пример в реальном проекте см. в разделе https://github.com/Intelight/vcpkg/blob/master/triplets/x86-windows-mixed.cmake.
Отзыв о vcpkg
vcpkg — это проект с открытым исходным кодом. Выберите ссылку, чтобы оставить отзыв: