Dépendances de l’hôte
Les outils utilisés au moment de la génération par d’autres ports pour générer du code ou implémenter un système de génération personnalisé peuvent être empaquetés à l’intérieur de vcpkg.
Consommation
Lorsque vous consommez un port en tant qu’outil, vous devez définir le champ de "host"
dépendance sur true. Par exemple :
{
"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
}
]
}
Dans ce cas, les contoso-code-generator
contoso-build-system
dépendances transitives et (y compris) sont générées et installées pour le triplet de l’hôte avant contoso-http-library
la génération.
Remarque
Les consommateurs doivent utiliser vcpkg.json
au lieu de leur format de CONTROL
métadonnées. Vous pouvez facilement convertir un fichier existant CONTROL
à l’aide vcpkg format-manifest /path/to/CONTROL
de .
Ensuite, dans le fichier de port du consommateur (contoso-http-library
dans l’exemple), la variable CURRENT_HOST_INSTALLED_DIR
CMake sera définie installed/<host-triplet>
et doit être utilisée pour localiser les ressources requises. Dans l’exemple, contoso-code-generator
il se peut que le consommateur ait installé tools/contoso-code-generator/ccg.exe
ce que le consommateur ajouterait à son chemin local via :
# ports/contoso-http-library/portfile.cmake
vcpkg_add_to_path(${CURRENT_HOST_INSTALLED_DIR}/tools/contoso-code-generator)
Spécification du triplet de l’hôte
Les triplets hôtes par défaut sont choisis en fonction de l’architecture hôte et du système d’exploitation, par exemple x64-windows
, x64-linux
ou x64-osx
. Elles peuvent être remplacées par :
- En mode manifeste basé sur CMake, appel
set(VCPKG_HOST_TRIPLET "<triplet>" CACHE STRING "")
avant la premièreproject()
directive - En mode manifeste basé sur MSBuild, définition de la
VcpkgHostTriplet
propriété - Sur la ligne de commande, via l’indicateur
--host-triplet=...
- La variable d'environnement
VCPKG_DEFAULT_HOST_TRIPLET
Produisant
La production d’un outil n’a aucune exigence particulière ; les outils doivent être créés en tant que port standard, en suivant toutes les stratégies et pratiques normales. Notamment, ils doivent se construire sur TARGET_TRIPLET
, et non HOST_TRIPLET
dans le contexte de leur portfile.
Si le contexte actuel est la compilation croisée (TARGET_TRIPLET
n’est pas HOST_TRIPLET
), la VCPKG_CROSSCOMPILING
valeur est définie sur une valeur vérité.
if(VCPKG_CROSSCOMPILING)
# This is a native build
else()
# This is a cross build
endif()
Ports hôtes uniquement
Certains ports ne doivent être dépendants que d’une dépendance d’hôte ; Les ports de script et les ports d’outil sont des exemples courants. Dans ce cas, vous pouvez utiliser l’expression "native"
prise en charge pour décrire cela. Cela prend en charge l’expression est true lorsqu’elle VCPKG_CROSSCOMPILING
a la valeur false (ce qui implique que TARGET_TRIPLET == HOST_TRIPLET
).
VCPKG_USE_HOST_TOOLS
Définissez cette option CMake pour ajouter des exécutables générés par vcpkg à CMAKE_PROGRAM_PATH
.
et les rendre disponibles pendant votre processus de génération.
Pour que cette option prenne effet, elle doit être définie avant tout appel à project()
votre CMakeLists.txt
fichier. La VCPKG_HOST_TRIPLET
variable doit également être définie.
Seuls les outils installés dans le tools
dossier du triplet hôte sont ajoutés à CMAKE_PROGRAM_PATH
.
En effet, les emplacements suivants sont ajoutés :
${VCPKG_INSTALLED/DIR}/${VCPKG_HOST_TRIPLET}/tools
${VCPKG_INSTALLED/DIR}/${VCPKG_HOST_TRIPLET}/tools/*/bin