Qu’est-ce que le mode manifeste ?
vcpkg a deux modes d’opération : le mode classique et le mode manifeste. Pour la plupart des utilisateurs, nous recommandons le mode manifeste.
Le mode manifeste utilise des fichiers JSON déclaratifs pour décrire les métadonnées relatives à votre projet ou package. Les fichiers manifestes doivent avoir le vcpkg.json
nom.
Le mode manifeste est engagé en exécutant la vcpkg install
commande pendant qu’il existe un fichier manifeste (vcpkg.json
) dans le répertoire de travail. Pour plus d’informations sur l’installation des packages en mode manifeste, lisez-en plus.
Le mode manifeste est également nécessaire pour utiliser des fonctionnalités avancées telles que le contrôle de version et les registres personnalisés.
Tous les ports vcpkg doivent inclure un vcpkg.json
fichier qui décrit les métadonnées relatives au package qu’ils installent.
vcpkg utilise les métadonnées dans le manifeste de package à diverses fins, telles que le calcul des arborescences de dépendances, la recherche de packages par nom ou description, la résolution des fonctionnalités, etc.
{
"name": "fmt",
"version": "10.1.1",
"description": "Formatting library for C++. It can be used as a safe alternative to printf or as a fast alternative to IOStreams.",
"homepage": "https://github.com/fmtlib/fmt",
"license": "MIT",
"dependencies": [
{
"name": "vcpkg-cmake",
"host": true
},
{
"name": "vcpkg-cmake-config",
"host": true
}
]
}
L’objectif principal de l’utilisation d’un fichier manifeste dans votre projet est de déclarer vos dépendances. Lorsque vous utilisez un manifeste de projet, vous pouvez spécifier des contraintes de version et des remplacements pour verrouiller des versions spécifiques de vos dépendances. Cette fonctionnalité n’est pas disponible en mode classique.
{
"dependencies": [ "fmt", "zlib" ],
"builtin-baseline": "3426db05b996481ca31e95fff3734cf23e0f51bc",
"overrides": [
{ "name": "zlib", "version": "1.2.8" }
]
}
Vcpkg peut être configuré par le biais d’un vcpkg-configuration.json
fichier pour ajouter d’autres registres de package ou des ports de superposition et des emplacements de triplets .
{
"default-registry": {
"kind": "git",
"baseline": "7476f0d4e77d3333fbb249657df8251c28c4faae",
"repository": "https://github.com/microsoft/vcpkg"
},
"registries": [
{
"kind": "git",
"repository": "https://github.com/microsoft/vcpkg-docs",
"reference": "vcpkg-registry",
"baseline": "768f6a3ad9f9b6c4c2ff390137690cf26e3c3453",
"packages": [ "beicode", "beison" ]
}
],
"overlay-ports": [
"C:\\dev\\my_vcpkg_ports"
]
}
Pour installer des packages à l’aide d’un fichier manifeste, vous utilisez la vcpkg install
commande sans arguments de package.
La commande doit être exécutée à partir d’un répertoire contenant un fichier manifeste (vcpkg.json
) ou le chemin d’accès à un fichier manifeste fourni à l’aide de l’option --x-manifest-root=<path>
.
Les packages installés en mode manifeste ne seront pas installés dans le répertoire global installed
, car ils le font en mode classique. Au lieu de cela, chaque manifeste obtient son propre répertoire d’installation nommé vcpkg_installed
; le vcpkg_installed
répertoire est créé dans le même répertoire que celui qui contient le fichier manifeste.
L’utilisation d’arborescences d’installation indépendantes par manifeste permet la séparation des dépendances entre différents projets. Cela contourne une limitation cruciale du mode classique, qui autorise l’installation d’une seule version de chaque port. Le mode manifeste conserve les versions des ports séparés par projet.
Les fichiers manifestes peuvent définir des ensembles additifs de fonctionnalités, de comportement et de dépendances à l’aide de « fonctionnalités ».
Dans vos projets, vous pouvez définir des fonctionnalités permettant d’activer ou de désactiver les dépendances qui s’appliquent aux parties de votre projet. Par exemple, si votre projet contient plusieurs composants, vous pouvez conserver les dépendances courantes dans la "dependencies"
liste, mais limiter d’autres à leurs composants respectifs.
Pour activer les fonctionnalités de votre projet, vous pouvez utiliser l’une des méthodes suivantes :
- Passez l’option
--x-feature
à votrevpckg install
commande. - Sur CMake, définissez le
VCPKG_MANIFEST_FEATURES
premier appel surproject()
. - Sur MSBuild, passez l’option
--x-feature
via « VcpkgAdditionalInstallOptions ».
{
"name": "my-game",
"dependencies": [ "grpc" ],
"features": {
"client": {
"description": "client game executable",
"dependencies": [ "sdl2", "bullet3" ]
},
"server": {
"description": "multiplayer server executable",
"dependencies": [ "proxygen" ]
},
"tests": {
"description": "development tests",
"dependencies": [ "gtest" ]
}
}
}
Pour générer uniquement les dépendances du composant « client » s’exécutent :
vcpkg install --x-feature=client
Voici quelques tâches à effectuer à l’étape suivante :
- Suivre le didacticiel en mode manifeste
- Lire et
vcpkg.json
vcpkg-configuration.json
articles de référence. - Verrouiller vos versions pour les builds reproductibles à l’aide du contrôle de version
Commentaires sur vcpkg
vcpkg est un projet open source. Sélectionnez un lien pour fournir des commentaires :