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
, riscv64
riscv32
s390x
arm64ec
loongarch32
loongarch64
ppc64le
, mips64
und .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_FLAGS
VCPKG_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_FILE
werden.
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
" , ON
oder 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:
- Bestimmen Sie die Einstellung für
VCPKG_VISUAL_STUDIO_PATH
das Triplet oder die UmgebungsvariableVCPKG_VISUAL_STUDIO_PATH
, oder betrachten Sie sie als nicht festgelegt. - Bestimmen sie die Einstellung für
VCPKG_PLATFORM_TOOLSET
das Triplet, oder betrachten Sie sie als nicht festgelegt. - 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.
- Filtern Sie die Liste basierend auf den Einstellungen für
VCPKG_VISUAL_STUDIO_PATH
undVCPKG_PLATFORM_TOOLSET
. - 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_FILE
werdenON
. 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:
- Dynamische Bibliotheksidentifikation
- Dynamic Library Standard Setup for Apps
- Alternativer vollständiger Pfad für dynamische Bibliothek
- Einbetten nicht standardmäßiger Codestrukturen in ein Bundle
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.