Hostabhängigkeiten
Tools, die zur Erstellungszeit von anderen Ports verwendet werden, um Code zu generieren oder ein benutzerdefiniertes Buildsystem zu implementieren, können in vcpkg verpackt werden.
Verbrauch
Wenn Sie einen Port als Tool verwenden, müssen Sie das Feld der "host"
Abhängigkeit auf "true" festlegen. Zum Beispiel:
{
"name": "contoso-http-library",
"version-string": "1.0.0",
"description": "Contoso's http runtime library",
"dependencies": [
"contoso-core-library",
{
"name": "contoso-code-generator",
"host": true
},
{
"name": "contoso-build-system",
"host": true
}
]
}
In diesem Fall werden die contoso-code-generator
und contoso-build-system
(einschließlich aller transitiven Abhängigkeiten) für das Host-Triplet erstellt und installiert, bevor contoso-http-library
sie erstellt wird.
Hinweis
Verbraucher müssen anstelle ihres Metadatenformats CONTROL
verwendenvcpkg.json
. Sie können eine vorhandene CONTROL
Datei ganz einfach mithilfe von vcpkg format-manifest /path/to/CONTROL
.
Anschließend wird innerhalb der Portdatei des Consumers (contoso-http-library
im Beispiel) die CMake-Variable CURRENT_HOST_INSTALLED_DIR
definiert installed/<host-triplet>
und sollte verwendet werden, um alle erforderlichen Ressourcen zu finden. In dem Beispiel könnte installiert tools/contoso-code-generator/ccg.exe
sein, contoso-code-generator
welches der Consumer zu seinem lokalen Pfad hinzufügen würde:
# ports/contoso-http-library/portfile.cmake
vcpkg_add_to_path(${CURRENT_HOST_INSTALLED_DIR}/tools/contoso-code-generator)
Angeben des Host-Triplets
Die Standardmäßigen Host-Triplets werden basierend auf der Hostarchitektur und dem Betriebssystem ausgewählt, z x64-windows
. B. , x64-linux
oder x64-osx
. Sie können überschrieben werden über:
- Rufen Sie
set(VCPKG_HOST_TRIPLET "<triplet>" CACHE STRING "")
im CMake-basierten Manifestmodus vor der erstenproject()
Direktive auf. - Festlegen der
VcpkgHostTriplet
Eigenschaft im MSBuild-basierten Manifestmodus - Über die Kennzeichnung in der Befehlszeile
--host-triplet=...
- Die
VCPKG_DEFAULT_HOST_TRIPLET
-Umgebungsvariable
Erzeugend
Die Herstellung eines Werkzeugs hat keine besonderen Anforderungen; Tools sollten als Standardport erstellt werden, wobei alle normalen Richtlinien und Methoden gelten. Insbesondere sollten sie im Kontext ihrer Portdatei gegeneinander TARGET_TRIPLET
HOST_TRIPLET
aufbauen.
Wenn der aktuelle Kontext kompiliert wird (TARGET_TRIPLET
ist nicht HOST_TRIPLET
), VCPKG_CROSSCOMPILING
wird auf einen Wahrheitswert festgelegt.
if(VCPKG_CROSSCOMPILING)
# This is a native build
else()
# This is a cross build
endif()
Nur Hostports
Einige Ports sollten nur über eine Hostabhängigkeit abhängig sein; Skriptports und Toolports sind häufige Beispiele. In diesem Fall können Sie den "native"
unterstützten Ausdruck verwenden, um dies zu beschreiben. Dieser Ausdruck wird unterstützt, wenn VCPKG_CROSSCOMPILING
falsch ist (implizierend das TARGET_TRIPLET == HOST_TRIPLET
).
VCPKG_USE_HOST_TOOLS
Legen Sie diese CMake-Option fest, um ausführbare Dateien hinzuzufügen, die von vcpkg CMAKE_PROGRAM_PATH
erstellt wurden.
und stellen sie während des Buildprozesses zur Verfügung.
Damit diese Option wirksam wird, muss sie vor einem Aufruf project()
der CMakeLists.txt
Datei festgelegt werden. Die VCPKG_HOST_TRIPLET
Variable muss ebenfalls festgelegt werden.
Nur Tools, die tools
im Ordner für das Host-Triplet installiert sind, werden hinzugefügt CMAKE_PROGRAM_PATH
.
Die folgenden Speicherorte werden effektiv hinzugefügt:
${VCPKG_INSTALLED/DIR}/${VCPKG_HOST_TRIPLET}/tools
${VCPKG_INSTALLED/DIR}/${VCPKG_HOST_TRIPLET}/tools/*/bin