Partager via


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/CONTROLde .

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-linuxou x64-osx. Elles peuvent être remplacées par :

  1. En mode manifeste basé sur CMake, appel set(VCPKG_HOST_TRIPLET "<triplet>" CACHE STRING "") avant la première project() directive
  2. En mode manifeste basé sur MSBuild, définition de la VcpkgHostTriplet propriété
  3. Sur la ligne de commande, via l’indicateur --host-triplet=...
  4. 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