Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье описываются переменные 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/ соответствующей платформы.
Примечание.
Чтобы создать пользовательский файл цепочки инструментов, лучше всего начать с включения существующей цепочки ${VCPKG_ROOT}/scripts/toolchains инструментов и расширения его. Это гарантирует, что необходимые переменные, заданные исполняемым файлом vcpkg, например VCPKG_TARGET_ARCHITECTURE, VCPKG_CXX_FLAGSVCPKG_LINKER_FLAGSи другими переменными, перенаправляются в CMake.
См. также документацию по CMake для файлов цепочки инструментов.
VCPKG_CXX_FLAGS
Задает дополнительные флаги компилятора, которые будут использоваться при использовании VCPKG_CHAINLOAD_TOOLCHAIN_FILE.
Этот параметр также имеет формы для флагов, относящихся к конфигурации, и флагов языка C:
VCPKG_CXX_FLAGSVCPKG_CXX_FLAGS_DEBUGVCPKG_CXX_FLAGS_RELEASEVCPKG_C_FLAGSVCPKG_C_FLAGS_DEBUGVCPKG_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_LINKER_FLAGS
Задает дополнительные флаги компоновщика, которые будут использоваться при создании динамических библиотек и исполняемых файлов в отсутствие VCPKG_CHAINLOAD_TOOLCHAIN_FILE.
Этот параметр также имеет формы для флагов, относящихся к конфигурации:
VCPKG_LINKER_FLAGSVCPKG_LINKER_FLAGS_DEBUGVCPKG_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_POST_PORTFILE_INCLUDES
Список файлов CMake, которые необходимо включить после выполнения portfile.cmake.
Это поле необязательно.
Содержимое и порядок файлов используются для хэша ABI, пути файлов не влияют на хэш ABI.
set(VCPKG_POST_PORTFILE_INCLUDES
"${CMAKE_CURRENT_LIST_DIR}/file1.cmake"
"${CMAKE_CURRENT_LIST_DIR}/file2.cmake"
)
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_PATHVCPKG_PLATFORM_TOOLSET. - Выберите лучший оставшийся вариант
Путь должен быть абсолютным, отформатированным с обратной косой чертой и не имеет косой черты:
set(VCPKG_VISUAL_STUDIO_PATH "C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview")
VCPKG_PLATFORM_TOOLSET
Указывает цепочку инструментов компилятора на основе Visual Studio на основе C/C++.
См 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_FIXUP_MACHO_RPATH
Гарантирует, что двоичные файлы 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 см. по следующим ссылкам:
- Идентификация динамической библиотеки
- Настройка динамической библиотеки уровня "Стандартный" для приложений
- Альтернатива полного пути динамической библиотеки
- Внедрение нестандартных структур кода в пакет
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-* порты как динамические библиотеки, но все остальные порты в виде статической библиотеки.
Пример в реальном проекте см. в разделе https://github.com/Intelight/vcpkg/blob/master/triplets/x86-windows-mixed.cmake.