Freigeben über


Tripletvariablen

In diesem Artikel werden die vcpkg-Variablen beschrieben, die für Tripletdateien verfügbar sind. Eine Tripletdatei kann auch benutzerdefinierte Variablen enthalten.

Eine allgemeine Ansicht der Triplet-Funktionen finden Sie in der Dokumentation zu Triplets-Konzepten.

Variablen

VCPKG_TARGET_ARCHITECTURE

Gibt die Architektur des Zielcomputers an.

Zu den gültigen Optionen gehören x86: , x64, arm, arm64, riscv64riscv32s390xarm64ecloongarch32loongarch64ppc64le, mips64und .wasm32

VCPKG_CRT_LINKAGE

Gibt die gewünschte CRT-Verknüpfung (für MSVC) an.

Gültige Optionen sind dynamic und static.

VCPKG_LIBRARY_LINKAGE

Gibt die bevorzugte Bibliotheksverbindung an.

Gültige Optionen sind dynamic und static. Bibliotheken können diese Einstellung ignorieren, wenn sie den bevorzugten Verknüpfungstyp nicht unterstützen.

VCPKG_BUILD_TYPE

Sie können diesen Wert so festlegen, dass release versionsgeschützte Versionen der Ports erstellt werden. Dieser Wert ist standardmäßig leer. Wenn dieser Wert leer ist, werden Vcpkg-Builds freigegeben und Debugkonfigurationen von Ports konfiguriert.

VCPKG_CMAKE_SYSTEM_NAME

Legt die Zielplattform fest.

Gültige Optionen umfassen einen beliebigen CMake-Systemnamen, z. B.:

  • Leer (Windows Desktop aus älteren Gründen)
  • WindowsStore(Universelle Windows-Plattform)
  • MinGW (Minimalistisches GNU für Windows)
  • Darwin (Mac OSX)
  • iOS (iOS)
  • Linux (Linux)
  • Emscripten (WebAssembly)

VCPKG_CMAKE_SYSTEM_VERSION

Gibt die Zielplattformsystemversion an.

Dieses Feld ist optional und wird, falls vorhanden, an den Build übergeben als CMAKE_SYSTEM_VERSION.

Siehe auch die CMake-Dokumentation für CMAKE_SYSTEM_VERSION

VCPKG_CHAINLOAD_TOOLCHAIN_FILE

Gibt eine alternative CMake-Toolbunddatei an, die verwendet werden soll.

Dadurch (sofern festgelegt) werden alle anderen Compilererkennungslogik außer Kraft gesetzt. Standardmäßig wird eine Toolkettedatei von scripts/toolchains/ der entsprechenden Plattform ausgewählt.

Hinweis

Um eine benutzerdefinierte Toolkette zu erstellen, ist es am besten, zunächst eine vorhandene Toolkette ${VCPKG_ROOT}/scripts/toolchains einzugeben und sie zu erweitern. Dadurch wird sichergestellt, dass wesentliche Variablen, die von der ausführbaren Datei vcpkg festgelegt werden, zVCPKG_TARGET_ARCHITECTURE. B. , VCPKG_CXX_FLAGSVCPKG_LINKER_FLAGS, und andere Variablen an CMake weitergeleitet werden.

Siehe auch die CMake-Dokumentation für Toolbunddateien.

VCPKG_CXX_FLAGS

Legt zusätzliche Compilerkennzeichnungen fest, die verwendet werden sollen, wenn sie nicht verwendet VCPKG_CHAINLOAD_TOOLCHAIN_FILEwerden.

Diese Option enthält auch Formulare für konfigurationsspezifische Flags und C-Sprachkennzeichnungen:

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

Wenn Sie festlegen VCPKG_CXX_FLAGS, müssen Sie auch festlegen VCPKG_C_FLAGS, und umgekehrt. Das gleiche gilt für die konfigurationsspezifischen Flags. Diese Variablen akzeptieren eine durch Leerzeichen getrennte Zeichenfolge von Compilerkennzeichnungen:

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

VCPKG_LINKER_FLAGS

Legt zusätzliche Linker-Flags fest, die beim Erstellen dynamischer Bibliotheken und ausführbarer Dateien verwendet werden sollen, wenn keine VCPKG_CHAINLOAD_TOOLCHAIN_FILE.

Diese Option enthält auch Formulare für konfigurationsspezifische Flags:

  • VCPKG_LINKER_FLAGS
  • VCPKG_LINKER_FLAGS_DEBUG
  • VCPKG_LINKER_FLAGS_RELEASE

VCPKG_MESON_CONFIGURE_OPTIONS

Legen Sie zusätzliche Meson-Konfigurationsoptionen fest, die an den Konfigurationsbefehl angefügt werden (in vcpkg_configure_meson).

Dieses Feld ist optional.

Auch als buildtypspezifische VCPKG_MESON_CONFIGURE_OPTIONS_DEBUG und VCPKG_MESON_CONFIGURE_OPTIONS_RELEASE Variablen verfügbar.

VCPKG_MESON_NATIVE_FILE_RELEASE

Stellen Sie eine zusätzliche konfigurationsabhängige Datei als mesonübergreifende/native Datei bereit. Kann verwendet werden, um die von vcpkg bereitgestellten Einstellungen außer Kraft zu setzen, da sie übergeben werden, nachdem die generierten cross/nativen Dateien von vcpkg übergeben wurden.

Besonders nützlich, um Eigene build_machine und host_machine Einträge bereitzustellen.

VCPKG_MESON_NATIVE_FILE_DEBUG

Siehe VCPKG_MESON_NATIVE_FILE_RELEASE.

VCPKG_MESON_CROSS_FILE_RELEASE

Siehe VCPKG_MESON_NATIVE_FILE_RELEASE.

VCPKG_MESON_CROSS_FILE_DEBUG

Siehe VCPKG_MESON_NATIVE_FILE_RELEASE.

VCPKG_CMAKE_CONFIGURE_OPTIONS

Legt zusätzliche CMake-Konfigurationsoptionen fest, die an den Konfigurationsbefehl angefügt werden (in vcpkg_cmake_configure).

Dieses Feld ist optional.

Auch als buildtypspezifische VCPKG_CMAKE_CONFIGURE_OPTIONS_DEBUG und VCPKG_CMAKE_CONFIGURE_OPTIONS_RELEASE Variablen verfügbar.

VCPKG_CONFIGURE_MAKE_OPTIONS

Legen Sie zusätzliche Automake/autoconf-Konfigurationsoptionen fest, die an den Befehl "Konfigurieren" (in vcpkg_configure_make) angefügt werden.

Dieses Feld ist optional.

Um beispielsweise bestimmte Libtool-Prüfungen zu überspringen, die möglicherweise fehlschlagen können:

set(VCPKG_CONFIGURE_MAKE_OPTIONS "lt_cv_deplibs_check_method=pass_all")

Auch als buildtypspezifische VCPKG_CONFIGURE_MAKE_OPTIONS_DEBUG und VCPKG_CONFIGURE_MAKE_OPTIONS_RELEASE Variablen verfügbar.

VCPKG_HASH_ADDITIONAL_FILES

Eine Liste der Dateien, die in die Berechnung von Paket-ABI-Hashes eingeschlossen werden sollen.

Dieses Feld ist optional.

Deklarieren Sie alle Dateien, die sich auf den Inhalt eines Pakets auswirken, und sollten in die Berechnung des ABI-Hashs berücksichtigt werden. Zum Beispiel:

  • Dateien, die in benutzerdefinierten Triplets und Toolchains enthalten sind (via include(filepath)).
  • Dateien, die in VCPKG_MESON_(NATIVE|CROSS)_FILE_<CONFIG>

Nur der Inhalt und die Reihenfolge der Dateien werden berücksichtigt, die Pfade der Dateien wirken sich nicht auf den ABI-Hash aus.

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

VCPKG_POST_PORTFILE_INCLUDES

Eine Liste der CMake-Dateien, die nach der Ausführung von portfile.cmake eingeschlossen werden sollen.

Dieses Feld ist optional.

Der Inhalt und die Reihenfolge der Dateien werden für den ABI-Hash verwendet, die Pfade der Dateien wirken sich nicht auf den ABI-Hash aus.

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

VCPKG_DEP_INFO_OVERRIDE_VARS

Hinweis

In diesem Abschnitt wird ein experimentelles Feature von vcpkg behandelt, das jederzeit geändert oder entfernt werden kann.

Ersetzt die standardmäßige berechnete Liste der Triplet-Ausdrücke "Supports".

Diese Option (sofern festgelegt) überschreibt den Standardsatz von Ausdrücken, die für die Auswertung von Plattformausdrücken verwendet werden.

Weitere Informationen finden Sie in der "supports" Dokumentation zum Manifestdateifeld.

Hinweis

Diese Liste wird über die vcpkg_get_dep_info Hilfsfunktion extrahiert.

VCPKG_DISABLE_COMPILER_TRACKING

Warnung

Das Aktivieren dieser Option wird nicht empfohlen, da sie zu ABI-Inkompatibilität in wiederhergestellten Binärpaketen führen kann. Weitere Informationen finden Sie in der Dokumentation zur binären Zwischenspeicherung.

Wenn diese Option auf TRUE" , ONoder 1" festgelegt ist, wird der Compiler nicht als Teil des Paket-Abis nachverfolgt.

Dies führt dazu, dass die binäre Zwischenspeicherung Builds von älteren oder neueren Compilern wiederverwendet.

Windows-spezifische Variablen

VCPKG_ENV_PASSTHROUGH

Weist vcpkg an, zusätzliche Umgebungsvariablen im Buildprozess zuzulassen.

Unter Windows erstellt vcpkg Pakete in einer speziellen sauberen Umgebung, die von der aktuellen Eingabeaufforderung isoliert ist, um die Zuverlässigkeit und Konsistenz der Build zu gewährleisten. Diese Tripletoption kann auf eine Liste zusätzlicher Umgebungsvariablen festgelegt werden, die der sauberen Umgebung hinzugefügt werden. Die Werte dieser Umgebungsvariablen werden in das Paket abi hashed – um Umgebungsvariablen ohne abi-Nachverfolgung zu übergeben, siehe VCPKG_ENV_PASSTHROUGH_UNTRACKED.

Sehen Sie sich auch den vcpkg env Befehl an, wie Sie die genaue Umgebung untersuchen können, die verwendet wird.

Hinweis

Diese Liste wird über die vcpkg_get_tags Hilfsfunktion extrahiert.

VCPKG_ENV_PASSTHROUGH_UNTRACKED

Weist vcpkg an, zusätzliche Umgebungsvariablen im Buildprozess ohne Abi-Nachverfolgung zuzulassen.

Siehe VCPKG_ENV_PASSTHROUGH.

VCPKG_VISUAL_STUDIO_PATH

Gibt die zu verwendende Visual Studio-Installation an.

Um die genaue Kombination aus Visual Studio-Instanz und Toolsetversion auszuwählen, gehen wir durch den folgenden Algorithmus:

  1. Bestimmen Sie die Einstellung für VCPKG_VISUAL_STUDIO_PATH das Triplet oder die Umgebungsvariable VCPKG_VISUAL_STUDIO_PATH, oder betrachten Sie sie als nicht festgelegt.
  2. Bestimmen sie die Einstellung für VCPKG_PLATFORM_TOOLSET das Triplet, oder betrachten Sie sie als nicht festgelegt.
  3. Sammeln einer Liste aller Paare von Visual Studio-Instanzen mit allen Toolsets, die in diesen Instanzen verfügbar sind
    • Dies wird zuerst nach Instanztyp (Stable, Prerelease, Legacy) und dann nach Toolsetversion (v143, v142, v141, v140) sortiert.
  4. Filtern Sie die Liste basierend auf den Einstellungen für VCPKG_VISUAL_STUDIO_PATH und VCPKG_PLATFORM_TOOLSET.
  5. Wählen Sie die beste verbleibende Option aus.

Der Pfad sollte absolut sein, mit umgekehrten Schrägstrichen formatiert sein und keinen nachgestellten Schrägstrich aufweisen:

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

VCPKG_PLATFORM_TOOLSET

Gibt die zu verwendende C/C++-Compilerkette von Visual Studio an.

Weitere Informationen finden Sie VCPKG_VISUAL_STUDIO_PATH im Vollauswahlalgorithmus.

Gültige Einstellungen:

  • Das Visual Studio 2022-Plattformtoolset ist v143.
  • Das Visual Studio 2019-Plattformtoolset ist v142.
  • Das Visual Studio 2017-Plattformtoolset ist v141.
  • Das Toolset der Visual Studio 2015-Plattform ist v140.

VCPKG_PLATFORM_TOOLSET_VERSION

Gibt die zu verwendende detaillierte MSVC C/C++-Compilerkette an.

Wählt standardmäßig VCPKG_PLATFORM_TOOLSET immer die neueste installierte Nebenversion des ausgewählten Toolsets aus. Wenn Sie mehr Granularität benötigen, können Sie diese Variable verwenden. Sie können entweder eine partielle oder vollständige Versionsnummer angeben. Gültige Werte sind z 14.25 . B. oder 14.27.29110.

VCPKG_LOAD_VCVARS_ENV

Bestimmt, ob vcpkg im Rahmen der Triplet-Umgebung nach einer Instanz von Visual Studio sucht und verwendet.

Standardmäßig gilt dies für Windows-Triplets, die nicht angegeben VCPKG_CHAINLOAD_TOOLCHAIN_FILEwerdenON. Bei Nicht-Windows-Triplets und -Triplets, die angeben VCPKG_CHAINLOAD_TOOLCHAIN_FILE, ist dies standardmäßig auf OFF.

Linux-Variablen

VCPKG_FIXUP_ELF_RPATH

Wenn diese Option auf (true|1|on) festgelegt ist, fügt vcpkg den RUNPATH Header von ausführbaren Dateien und freigegebenen Bibliotheken hinzu.$ORIGIN $ORIGIN/<path_relative_to_lib> Auf diese Weise können Pakete unter Linux verschoben werden.

MacOS-Variablen

VCPKG_INSTALL_NAME_DIR

Legt den Installationsnamen fest, der beim Erstellen dynamischer macOS-Bibliotheken verwendet wird. Der Standardwert ist @rpath. Weitere Informationen finden Sie in der CMake-Dokumentation für CMAKE_INSTALL_NAME_DIR .

VCPKG_FIXUP_MACHO_RPATH

Stellt sicher, dass Mach-O-Binärdateien, die von vcpkg erstellt wurden, mithilfe relativer Installationsnamen und Run-Paths relocatable sind.

Bei Festlegung auf ON:

  • Ändert das absolute LC_LC_ID_DYLIB Feld @rpath/<library> für freigegebene Bibliotheksbinärdateien;
  • Ändert absolute LC_RPATH Felder relativ @loader_path/<relative/path/to/library> zu ausführbaren und freigegebenen Bibliotheksbinärdateien.

Wichtig

Diese Funktionalität ist standardmäßig aktiviert, wenn VCPKG_TARGET_IS_OSX dies der Fall ist TRUE. Um dies zu OFF deaktivieren, legen Sie diese explizit in einer Tripletdatei festVCPKG_FIXUP_MACHO_RPATH.

Weitere Informationen zu dynamischen Bibliotheken unter macOS finden Sie unter den folgenden Links:

VCPKG_OSX_DEPLOYMENT_TARGET

Legt die minimale macOS-Version für kompilierte Binärdateien fest. Dadurch wird auch geändert, nach welchen Versionen des macOS-Plattform-SDKs CMake gesucht wird. Weitere Informationen finden Sie in der CMake-Dokumentation für CMAKE_OSX_DEPLOYMENT_TARGET .

VCPKG_OSX_SYSROOT

Legen Sie den Namen oder Pfad des macOS-Plattform-SDK fest, das von CMake verwendet wird. Weitere Informationen finden Sie in der CMake-Dokumentation für CMAKE_OSX_SYSROOT .

VCPKG_OSX_ARCHITECTURES

Legen Sie die macOS/iOS-Zielarchitektur fest, die von CMake verwendet wird. Weitere Informationen finden Sie in der CMake-Dokumentation für CMAKE_OSX_ARCHITECTURES .

Anpassung pro Port

Die CMake-Variable PORT wird beim Interpretieren der Tripletdatei festgelegt. Sie kann verwendet werden, um Einstellungen (z VCPKG_LIBRARY_LINKAGE. B. ) pro Port zu ändern.

Beispiel:

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

Dadurch werden alle qt5-* Ports als dynamische Bibliotheken erstellt, aber jeder andere Port als statische Bibliothek.

Ein Beispiel in einem echten Projekt finden Sie unter https://github.com/Intelight/vcpkg/blob/master/triplets/x86-windows-mixed.cmake.