Sdílet prostřednictvím


Trojité proměnné

Tento článek popisuje proměnné vcpkg, které jsou k dispozici pro soubory triplet. Trojitý soubor může obsahovat také uživatelem definované proměnné.

V dokumentaci k konceptům triplets najdete základní přehled o možnostech tripletů.

Proměnné

VCPKG_TARGET_ARCHITECTURE

Určuje architekturu cílového počítače.

Mezi platné možnosti patří , , , , s390xriscv64arm64ecarm64ppc64leriscv32, loongarch32, loongarch64, mips64, a .wasm32armx64x86

VCPKG_CRT_LINKAGE

Určuje požadované propojení CRT (pro MSVC).

Platné možnosti jsou dynamic a static.

VCPKG_LIBRARY_LINKAGE

Určuje upřednostňované propojení knihovny.

Platné možnosti jsou dynamic a static. Knihovny můžou toto nastavení ignorovat, pokud nepodporují upřednostňovaný typ propojení.

VCPKG_BUILD_TYPE

Tuto hodnotu můžete nastavit tak, aby release se sestavily verze portů jen pro vydání. Ve výchozím nastavení je tato hodnota prázdná. Pokud je tato hodnota prázdná vcpkg builds release and debug configurations of ports.

VCPKG_CMAKE_SYSTEM_NAME

Určuje cílovou platformu.

Mezi platné možnosti patří libovolný název systému CMake, například:

  • Prázdné (Windows Desktop z důvodu starší verze)
  • WindowsStore(Univerzální platforma Windows)
  • MinGW (Minimal GNU pro Windows)
  • Darwin (Mac OSX)
  • iOS (iOS)
  • Linux (Linux)
  • Emscripten (WebAssembly)

VCPKG_CMAKE_SYSTEM_VERSION

Určuje verzi systému cílové platformy.

Toto pole je volitelné a pokud je k dispozici, předá se do sestavení jako CMAKE_SYSTEM_VERSION.

Viz také dokumentace k CMake pro CMAKE_SYSTEM_VERSION

VCPKG_CHAINLOAD_TOOLCHAIN_FILE

Určuje alternativní soubor sady nástrojů CMake, který se má použít.

Tato možnost (pokud je nastavená) přepíše všechny ostatní logiky detekce kompilátoru. Ve výchozím nastavení je soubor sady nástrojů vybraný z scripts/toolchains/ příslušné platformy.

Poznámka:

Pokud chcete vytvořit vlastní soubor sady nástrojů, je nejlepší začít tím, že z ${VCPKG_ROOT}/scripts/toolchains něj zahrnete existující sadu nástrojů a rozšíříte ji. Tím se zajistí, že se základní proměnné nastavené spustitelným souborem vcpkg, například VCPKG_TARGET_ARCHITECTURE, VCPKG_CXX_FLAGS, VCPKG_LINKER_FLAGSa další proměnné předávají do CMake.

Viz také dokumentace KMake pro soubory toolchain.

VCPKG_CXX_FLAGS

Nastaví další příznaky kompilátoru, které se použijí při použití VCPKG_CHAINLOAD_TOOLCHAIN_FILE.

Tato možnost má také formuláře pro příznaky specifické pro konfiguraci a příznaky jazyka C:

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

Pokud nastavíte VCPKG_CXX_FLAGS, musíte také nastavit VCPKG_C_FLAGSa naopak. Totéž platí pro příznaky specifické pro konfiguraci. Tyto proměnné přijímají řetězec příznaků kompilátoru oddělených mezerami:

set(VCPKG_CXX_FLAGS "/wd4996 -D_CRT_SECURE_NO_WARNINGS")
set(VCPKG_C_FLAGS "/wd4996 -D_CRT_SECURE_NO_WARNINGS")

VCPKG_LINKER_FLAGS

Nastaví další příznaky linkeru, které se mají použít při vytváření dynamických knihoven a spustitelných souborů v nepřítomnosti VCPKG_CHAINLOAD_TOOLCHAIN_FILE.

Tato možnost má také formuláře pro příznaky specifické pro konfiguraci:

  • VCPKG_LINKER_FLAGS
  • VCPKG_LINKER_FLAGS_DEBUG
  • VCPKG_LINKER_FLAGS_RELEASE

VCPKG_MESON_CONFIGURE_OPTIONS

Nastavte další možnosti konfigurace Mesonu, které jsou připojeny k příkazu configure (v vcpkg_configure_meson).

Toto pole je nepovinné.

K dispozici také jako specifické pro VCPKG_MESON_CONFIGURE_OPTIONS_DEBUG typ sestavení a VCPKG_MESON_CONFIGURE_OPTIONS_RELEASE proměnné.

VCPKG_MESON_NATIVE_FILE_RELEASE

Zadejte další závislý konfigurační soubor jako mesonový křížový/nativní soubor. Dá se použít k přepsání nastavení poskytovaného nástrojem vcpkg, protože se předá po předání vygenerovaných křížových nebo nativních souborů vcpkg.

Zvláště užitečné poskytnout vlastní build_machine a host_machine položky.

VCPKG_MESON_NATIVE_FILE_DEBUG

Viz VCPKG_MESON_NATIVE_FILE_RELEASE.

VCPKG_MESON_CROSS_FILE_RELEASE

Viz VCPKG_MESON_NATIVE_FILE_RELEASE.

VCPKG_MESON_CROSS_FILE_DEBUG

Viz VCPKG_MESON_NATIVE_FILE_RELEASE.

VCPKG_CMAKE_CONFIGURE_OPTIONS

Nastaví další možnosti konfigurace CMake, které jsou připojeny k příkazu configure (v vcpkg_cmake_configure).

Toto pole je nepovinné.

K dispozici také jako specifické pro VCPKG_CMAKE_CONFIGURE_OPTIONS_DEBUG typ sestavení a VCPKG_CMAKE_CONFIGURE_OPTIONS_RELEASE proměnné.

VCPKG_CONFIGURE_MAKE_OPTIONS

Nastavte další možnosti konfigurace automake/autoconf, které jsou připojené k příkazu configure (v vcpkg_configure_make).

Toto pole je nepovinné.

Pokud například chcete přeskočit určité kontroly nástroje libtool, které můžou být neúspěšné:

set(VCPKG_CONFIGURE_MAKE_OPTIONS "lt_cv_deplibs_check_method=pass_all")

K dispozici také jako specifické pro VCPKG_CONFIGURE_MAKE_OPTIONS_DEBUG typ sestavení a VCPKG_CONFIGURE_MAKE_OPTIONS_RELEASE proměnné.

VCPKG_HASH_ADDITIONAL_FILES

Seznamsouborůch

Toto pole je nepovinné.

Deklarujte všechny soubory, které mají vliv na obsah balíčku, a měly by být začleněny do výpočtu hodnoty hash ABI. Příklad:

  • Soubory, které jsou zahrnuté (prostřednictvím include(filepath)) ve vlastních trojitých a toolchains.
  • Soubory definované v VCPKG_MESON_(NATIVE|CROSS)_FILE_<CONFIG>

Zvažují se pouze obsah a pořadí souborů, cesty k souborům nemají vliv na hodnotu hash ABI.

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

VCPKG_POST_PORTFILE_INCLUDES

Seznam souborů CMake, které se mají zahrnout po spuštění souboru portfile.cmake.

Toto pole je nepovinné.

Obsah a pořadí souborů se používají pro hodnotu hash ABI, cesty k souborům nemají vliv na hodnotu hash ABI.

set(VCPKG_POST_PORTFILE_INCLUDES
  "${CMAKE_CURRENT_LIST_DIR}/file1.cmake"
  "${CMAKE_CURRENT_LIST_DIR}/file2.cmake"
)

VCPKG_DEP_INFO_OVERRIDE_VARS

Poznámka:

Tato část popisuje experimentální funkci vcpkg, která se může kdykoli změnit nebo odebrat.

Nahradí výchozí vypočítaný seznam termínů "Supports" (Podporuje).

Tato možnost (pokud je nastavená) přepíše výchozí sadu termínů použitých pro vyhodnocení výrazu platformy.

Další podrobnosti najdete v "supports" dokumentaci k poli souboru manifestu.

Poznámka:

Tento seznam se extrahuje prostřednictvím vcpkg_get_dep_info pomocné funkce.

VCPKG_DISABLE_COMPILER_TRACKING

Upozorňující

Povolení této možnosti se nedoporučuje, protože může vést k nekompatibilitě ABI v obnovených binárních balíčcích. Další informace najdete v dokumentaci k binární mezipaměti.

Pokud je tato možnost nastavena na TRUEhodnotu , ONnebo 1, kompilátor nebude sledován jako součást balíčku abis.

To způsobí, že binární ukládání do mezipaměti znovu použije sestavení ze starších nebo novějších kompilátorů.

Proměnné specifické pro Windows

VCPKG_ENV_PASSTHROUGH

Dává vcpkg pokyn, aby do procesu sestavení povolil další proměnné prostředí.

V systému Windows vytváří vcpkg balíčky ve speciálním čistém prostředí, které je izolované od aktuálního příkazového řádku, aby se zajistila spolehlivost a konzistence sestavení. Tuto trojitou možnost lze nastavit na seznam dalších proměnných prostředí, které se přidají do čistého prostředí. Hodnoty těchto proměnných prostředí budou hashovány do balíčku abi – pro předávání proměnných prostředí bez sledování abi, viz VCPKG_ENV_PASSTHROUGH_UNTRACKED.

Podívejte se také na vcpkg env příkaz, jak můžete zkontrolovat přesné prostředí, které se použije.

Poznámka:

Tento seznam se extrahuje prostřednictvím vcpkg_get_tags pomocné funkce.

VCPKG_ENV_PASSTHROUGH_UNTRACKED

Dává vcpkg pokyn, aby umožnil další proměnné prostředí do procesu sestavení bez sledování abi.

Viz třída VCPKG_ENV_PASSTHROUGH.

VCPKG_VISUAL_STUDIO_PATH

Určuje instalaci sady Visual Studio, která se má použít.

Pokud chcete vybrat přesnou kombinaci instance sady Visual Studio a verze sady nástrojů, projdeme si následující algoritmus:

  1. Určení nastavení z VCPKG_VISUAL_STUDIO_PATH tripletu nebo proměnné VCPKG_VISUAL_STUDIO_PATHprostředí nebo zvážení jeho zrušení
  2. Určení nastavení z VCPKG_PLATFORM_TOOLSET trojité hodnoty nebo jeho zrušení
  3. Shromáždění seznamu všech párů instancí sady Visual Studio se všemi sadami nástrojů dostupnými v těchto instancích
    • Toto je seřazeno nejprve podle typu instance (Stable, Prerelease, Legacy) a potom podle verze sady nástrojů (v143, v142, v141, v140)
  4. Vyfiltrujte seznam na základě nastavení a VCPKG_VISUAL_STUDIO_PATH VCPKG_PLATFORM_TOOLSET.
  5. Výběr nejlepší zbývající možnosti

Cesta by měla být absolutní, formátovaná zpětnými lomítky a nemá koncové lomítko:

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

VCPKG_PLATFORM_TOOLSET

Určuje sadu nástrojů kompilátoru C/C++ založené na sadě Visual Studio, která se má použít.

Podívejte VCPKG_VISUAL_STUDIO_PATH se na úplný algoritmus výběru.

Platná nastavení:

  • Sada nástrojů platformy Visual Studio 2022 je v143.
  • Sada nástrojů platformy Visual Studio 2019 je v142.
  • Sada nástrojů platformy Visual Studio 2017 je v141.
  • Sada nástrojů platformy Visual Studio 2015 je v140.

VCPKG_PLATFORM_TOOLSET_VERSION

Určuje podrobnou sadu nástrojů kompilátoru JAZYKA C/C++ MSVC, která se má použít.

Ve výchozím nastavení VCPKG_PLATFORM_TOOLSET vždy zvolí nejnovější nainstalovanou podverzi vybrané sady nástrojů. Pokud potřebujete podrobnější úroveň, můžete tuto proměnnou použít. Můžete zadat buď částečné, nebo úplné číslo verze. Platné hodnoty jsou například 14.25 nebo 14.27.29110.

VCPKG_LOAD_VCVARS_ENV

Určuje, zda bude vcpkg hledat a používat instanci sady Visual Studio jako součást prostředí triplet.

Ve výchozím nastavení se jedná ON o trojité tečky systému Windows, které nezadávají VCPKG_CHAINLOAD_TOOLCHAIN_FILE. U trojitých a trojitých a trojitých systémů, které nezadávají VCPKG_CHAINLOAD_TOOLCHAIN_FILEsystém Windows, se toto výchozí nastavení nastaví na OFFhodnotu .

Proměnné Linuxu

VCPKG_FIXUP_ELF_RPATH

Pokud je tato možnost nastavená na hodnotu (true|1|on), přidá $ORIGIN vcpkg hlavičku RUNPATH spustitelných souborů a sdílených knihoven a $ORIGIN/<path_relative_to_lib> do záhlaví. To umožňuje přemístit balíčky v Linuxu.

Proměnné macOS

VCPKG_INSTALL_NAME_DIR

Nastaví název instalace použitý při vytváření dynamických knihoven systému macOS. Výchozí hodnota je @rpath. Další informace najdete v dokumentaci k CMake pro CMAKE_INSTALL_NAME_DIR .

VCPKG_FIXUP_MACHO_RPATH

Zajišťuje, aby se binární soubory Mach-O vytvořené nástrojem vcpkg znovu přidělily pomocí relativních názvů instalací a cest spuštění.

Při nastavení na ON:

  • Upraví absolutní LC_LC_ID_DYLIB pole pro @rpath/<library> binární soubory sdílené knihovny;
  • Upraví absolutní LC_RPATH pole vzhledem @loader_path/<relative/path/to/library> ke spustitelným souborům a binárním souborům sdílené knihovny.

Důležité

Tato funkce je ve výchozím nastavení povolena, pokud VCPKG_TARGET_IS_OSX je TRUE. Pokud chcete zakázat explicitní nastavení VCPKG_FIXUP_MACHO_RPATH OFF v trojitém souboru.

Další informace o dynamických knihovnách v systému macOS najdete na následujících odkazech:

VCPKG_OSX_DEPLOYMENT_TARGET

Nastaví minimální verzi macOS pro kompilované binární soubory. Tím se také změní, jaké verze sady SDK platformy macOS CMake budou hledat. Další informace najdete v dokumentaci k CMake pro CMAKE_OSX_DEPLOYMENT_TARGET .

VCPKG_OSX_SYSROOT

Nastavte název nebo cestu sady SDK platformy macOS, kterou bude CMake používat. Další informace najdete v dokumentaci k CMake pro CMAKE_OSX_SYSROOT .

VCPKG_OSX_ARCHITECTURES

Nastavte cílovou architekturu macOS nebo iOS, kterou bude CMake používat. Další informace najdete v dokumentaci k CMake pro CMAKE_OSX_ARCHITECTURES .

Přizpůsobení jednotlivých portů

Proměnná PORT CMake se nastaví při interpretaci souboru triplet. Dá se použít ke změně nastavení (například VCPKG_LIBRARY_LINKAGE) pro jednotlivé porty.

Příklad:

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

Tím se vytvoří všechny qt5-* porty jako dynamické knihovny, ale každý druhý port jako statická knihovna.

Příklad v reálném projektu najdete v tématu https://github.com/Intelight/vcpkg/blob/master/triplets/x86-windows-mixed.cmake.