vcpkg dans les projets MSBuild
Méthodes d’intégration
Intégration à l’échelle de l’utilisateur
Pour utiliser vcpkg dans vos projets MSBuild, exécutez la commande suivante :
vcpkg integrate install
Vous devez uniquement exécuter la vcpkg integrate install
commande la première fois que vous souhaitez activer l’intégration MSBuild. Cela permet l’intégration de MSBuild pour tous vos projets existants et futurs.
Si vous avez plusieurs instances de vcpkg, vous pouvez utiliser la commande pour mettre à jour l’instance vcpkg integrate install
vcpkg utilisée dans MSBuild. Permet vcpkg integrate remove
de supprimer l’intégration à l’échelle de l’utilisateur MSBuild.
Cette méthode d’intégration ajoute automatiquement des packages installés sur vcpkg aux propriétés de projet suivantes : Inclure des répertoires, des répertoires de liens et des bibliothèques de liens. En outre, cela crée une action post-build qui garantit que toutes les DLL requises sont copiées dans le dossier de sortie de build. Cela fonctionne pour toutes les solutions et projets à l’aide de Visual Studio 2015 ou version ultérieure.
C’est tout ce que vous devez faire pour la grande majorité des bibliothèques. Toutefois, certaines bibliothèques effectuent des comportements en conflit, tels que la main()
redéfinition . Étant donné que vous devez choisir par projet parmi ces options conflictuelles souhaitées, vous devez ajouter manuellement ces bibliothèques à vos entrées de l’éditeur de liens.
Voici quelques exemples où la liaison manuelle est nécessaire (pas une liste exhaustive) :
- Gtest fournit
gtest
,gmock
,gtest_main
etgmock_main
- SDL2 fournit
SDL2main
- SFML fournit
sfml-main
- Boost.Test fournit
boost_test_exec_monitor
Pour obtenir une liste complète de tous vos packages installés, exécutez vcpkg owns manual-link
.
Importer .props
et .targets
vcpkg peut également être intégré dans des projets MSBuild en important explicitement les fichiers et scripts/buildsystems/vcpkg.targets
les scripts/buildsystems/vcpkg.props
fichiers dans chacun d’eux.vcxproj
. En utilisant des chemins d’accès relatifs, cela permet à vcpkg d’être consommé par un sous-module et automatiquement acquis par les utilisateurs lorsqu’ils s’exécutent git clone
.
Le moyen le plus simple d’ajouter ces éléments à chaque projet de votre solution consiste à créer et à créer Directory.Build.props
des Directory.Build.targets
fichiers à la racine de votre dépôt.
Les exemples suivants supposent qu’ils se trouvent à la racine de votre référentiel avec un sous-module de microsoft/vcpkg
at vcpkg
.
Exemple Directory.Build.props
<Project>
<Import Project="$(MSBuildThisFileDirectory)vcpkg\scripts\buildsystems\msbuild\vcpkg.props" />
</Project>
Exemple Directory.Build.targets
<Project>
<Import Project="$(MSBuildThisFileDirectory)vcpkg\scripts\buildsystems\msbuild\vcpkg.targets" />
</Project>
Consultez la section Personnaliser votre build de la documentation MSBuild officielle pour plus d’informations sur Directory.Build.targets
et Directory.Build.props
.
Package NuGet lié
Remarque
Cette approche n’est pas recommandée pour les nouveaux projets, car elle les rend difficiles à partager avec d’autres personnes. Pour un package NuGet portable autonome, consultez le export command
fichier .
Les projets VS peuvent également être intégrés via un package NuGet. Cela modifie le fichier projet. Nous vous déconseillons donc cette approche pour les projets code source ouvert.
PS D:\src\vcpkg> .\vcpkg integrate project
Created nupkg: D:\src\vcpkg\scripts\buildsystems\vcpkg.D.src.vcpkg.1.0.0.nupkg
With a project open, go to Tools->NuGet Package Manager->Package Manager Console and paste:
Install-Package vcpkg.D.src.vcpkg -Source "D:/src/vcpkg/scripts/buildsystems"
Remarque
Le package NuGet généré ne contient pas les bibliothèques réelles. Elle agit plutôt comme un raccourci (ou un lien symbolique) vers l’installation de vcpkg et se met à jour automatiquement avec toutes les modifications (installation/suppression) apportées aux bibliothèques. Vous n’avez pas besoin de régénérer ou de mettre à jour le package NuGet.
Configuration courante
VcpkgEnabled
(Utiliser Vcpkg)
Cela peut être défini sur « false » pour désactiver explicitement l’intégration de vcpkg pour le projet
VcpkgConfiguration
(Configuration de Vcpkg)
Si vos noms de configuration sont trop complexes pour que vcpkg suppose correctement, vous pouvez affecter cette propriété à Release
ou Debug
indiquer explicitement à vcpkg quelle variante de bibliothèques vous souhaitez consommer.
VcpkgEnableManifest
(Utiliser le manifeste Vcpkg)
Cette propriété doit être définie true
pour pouvoir consommer à partir d’un fichier local vcpkg.json
. Si la valeur est définie false
, tous les fichiers locaux vcpkg.json
sont ignorés.
Cette valeur est actuellement la valeur par défaut , mais elle sera par défaut false
true
dans le futur.
VcpkgTriplet
(Triplet)
Cette propriété contrôle le triplet à partir duquel consommer des bibliothèques, telles que x64-windows-static
ou arm64-windows
.
S’il n’est pas défini explicitement, vcpkg déduira le triplet correct en fonction de vos paramètres Visual Studio. vcpkg déduira uniquement les triplets qui utilisent la liaison de bibliothèque dynamique et la liaison CRT dynamique ; si vous souhaitez des dépendances statiques ou utiliser le CRT statique (/MT
), vous devez définir le triplet manuellement.
Vous pouvez voir le triplet déduit automatiquement en définissant votre verbe MSBuild sur Normal ou supérieur :
Raccourci : Ctrl+Q « générer et exécuter »
Outils -> Options -> Projets et solutions -> Générer et exécuter -> Détail de génération de projet MSBuild
Voir aussi Triplets
VcpkgHostTriplet
(Triplet de l’hôte)
Cela peut être défini sur un triplet personnalisé à utiliser pour résoudre les dépendances de l’hôte.
Si ce paramètre n’est pas défini, il s’agit par défaut du triplet « natif » (x64-windows).
Consultez également les dépendances de l’hôte.
VcpkgInstalledDir
(Répertoire installé)
Cette propriété définit l’emplacement à partir duquel vcpkg installe et consomme des bibliothèques.
En mode manifeste, cette valeur par défaut est $(VcpkgManifestRoot)\vcpkg_installed\$(VcpkgTriplet)\
. En mode classique, cette valeur par défaut est $(VcpkgRoot)\installed\
.
VcpkgApplocalDeps
(Déployer localement des DLL)
Cette propriété active ou désactive la détection et la copie de DLL dépendantes de l’arborescence installée vcpkg vers le répertoire de sortie du projet.
VcpkgXUseBuiltInApplocalDeps
(Utiliser un déploiement local intégré d’application)
Cette propriété, lorsqu’elle est activée, utilise l’implémentation de déploiement de DLL locale d’application intégrée de vcpkg lorsque l’application déploie des DLL localement. Cette propriété est supprimée et n’a aucun effet lorsque l’implémentation intégrée n’est plus expérimentale.
Cette propriété n’a aucun effet lorsqu’elle $(VcpkgApplocalDeps)
a la valeur false.
Configuration du mode manifeste
Pour utiliser des manifestes (vcpkg.json
) avec MSBuild, vous devez d’abord utiliser l’une des méthodes d’intégration ci-dessus. Ensuite, ajoutez une vcpkg.json au-dessus de votre fichier projet (par exemple, à la racine de votre référentiel source) et définissez la propriété VcpkgEnableManifest
true
sur . Vous pouvez définir cette propriété via l’IDE dans Propriétés>du projet Vcpkg>Utiliser le manifeste Vcpkg. Vous devrez peut-être recharger l’IDE pour afficher la page de propriétés vcpkg.
vcpkg s’exécute pendant la génération de votre projet et installe toutes les dépendances répertoriées à vcpkg_installed/$(VcpkgTriplet)/
côté du vcpkg.json
fichier . Ces bibliothèques seront ensuite automatiquement incluses et liées à vos projets MSBuild.
Problèmes connus
- Visual Studio 2015 ne suit pas correctement les modifications apportées aux
vcpkg.json
fichiers etvcpkg-configuration.json
ne répond pas aux modifications, sauf si une.cpp
modification est effectuée.
VcpkgAdditionalInstallOptions
(Options supplémentaires)
Lorsque vous utilisez un manifeste, cette option spécifie des indicateurs de ligne de commande supplémentaires à passer à l’appel de l’outil vcpkg sous-jacent. Cela peut être utilisé pour accéder aux fonctionnalités qui n’ont pas encore été exposées via une autre option.
VcpkgManifestInstall
(Installer les dépendances Vcpkg)
Cette propriété peut être définie pour false
désactiver la restauration automatique des dépendances pendant la génération du projet. Les dépendances doivent être restaurées manuellement via la ligne de commande vcpkg séparément.