Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Conseil
Consultez « Installer une dépendance à partir d’un fichier manifeste » pour connaître la méthode recommandée d’installation de vos dépendances.
Avertissement
Certaines fonctionnalités vcpkg ne sont pas disponibles en mode classique.
vcpkg a deux modes d’opération : le mode classique et le mode manifeste. Cet article explique comment installer des packages à l’aide du mode classique. Pour la plupart des utilisateurs, nous vous recommandons d’utiliser le mode manifeste à la place.
En mode classique, vous utilisez vcpkg comme interface de ligne de commande pour installer vos dépendances dans un répertoire d’installation commun. Généralement, situé dans %VCPKG_ROOT%/installed
, où %VCPKG_ROOT%
est le répertoire d’installation de vcpkg.
Dans ce tutoriel, vous allez apprendre à :
Conditions préalables
- vcpkg
- Un terminal
- Éditeur de code
- Compilateur C++
- (Facultatif) CMake ou MSBuild
1 - Créer un projet
Dans un nouveau dossier, créez un fichier source nommé main.cxx
avec le contenu suivant :
#include <cxxopts.hpp>
#include <fmt/format.h>
#include <range/v3/view.hpp>
namespace view = ranges::views;
int fib(int x)
{
int a = 0, b = 1;
for (int it : view::repeat(0) | view::take(x))
{
(void)it;
int tmp = a;
a += b;
b = tmp;
}
return a;
}
int main(int argc, char **argv)
{
cxxopts::Options options("fibo", "Print the fibonacci sequence up to a value 'n'");
options.add_options()("n,value", "The value to print to", cxxopts::value<int>()->default_value("10"));
auto result = options.parse(argc, argv);
auto n = result["value"].as<int>();
for (int x : view::iota(1) | view::take(n))
{
fmt::print("fib({}) = {}\n", x, fib(x));
}
}
Le code fait référence aux bibliothèques open source : cxxopts
, fmt
et range-v3
; qui sont tous disponibles dans le registre public vcpkg à https://github.com/Microsoft/vcpkg.
2 - Intégrer vcpkg à votre système de build
Dans cette étape, nous vous montrons comment intégrer vcpkg à CMake ou MSBuild afin que vos dépendances de projet soient automatiquement installées ou restaurées chaque fois que vous générez le projet.
Si vous utilisez un autre système de génération, passez à l’étape suivante : Installer les dépendances.
Pour utiliser vcpkg dans vos projets MSBuild, exécutez la commande suivante :
vcpkg integrate install
Vous devez uniquement exécuter la commande vcpkg integrate install
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. Utilisez vcpkg integrate remove
pour supprimer l’intégration à l’échelle du système MSBuild.
Cette méthode d’intégration ajoute automatiquement des packages vcpkg installés aux propriétés de projet suivantes : Include Directories
, Link Directories
et Link Libraries
. 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.
3 - Installer les dépendances
Le code fait référence aux bibliothèques open source : cxxopts
, fmt
et range-v3
; tous sont disponibles dans le registre public vcpkg à https://github.com/Microsoft/vcpkg.
Pour installer ces packages, utilisez la commande vcpkg install
.
vcpkg install cxxopts fmt range-v3
$ ./vcpkg install cxxopts fmt range-v3
Computing installation plan...
The following packages will be built and installed:
cxxopts:x64-windows -> 3.1.1
fmt:x64-windows -> 10.0.0
range-v3:x64-windows -> 0.12.0#1
* vcpkg-cmake:x64-windows -> 2023-05-04
* vcpkg-cmake-config:x64-windows -> 2022-02-06#1
Additional packages (*) will be modified to complete this operation.
(omitted)
cxxopts provides CMake targets:
# this is heuristically generated, and may not be correct
find_package(cxxopts CONFIG REQUIRED)
target_link_libraries(main PRIVATE cxxopts::cxxopts)
The package fmt provides CMake targets:
find_package(fmt CONFIG REQUIRED)
target_link_libraries(main PRIVATE fmt::fmt)
# Or use the header-only version
find_package(fmt CONFIG REQUIRED)
target_link_libraries(main PRIVATE fmt::fmt-header-only)
range-v3 provides CMake targets:
# this is heuristically generated, and may not be correct
find_package(range-v3 CONFIG REQUIRED)
target_link_libraries(main PRIVATE range-v3::meta range-v3::concepts range-v3::range-v3)
4 - Générer le projet
Important
Assurez-vous que le triplet de vos packages installés correspond à la configuration de votre projet. Utilisez x64-windows
ou x64-windows-static
pour vos projets 64 bits et x86-windows
ou x86-windows-static
pour vos projets 32 bits.
Avec l’intégration à l’échelle du système activée, exécutez simplement msbuild
pour générer le projet :
PS D:\projects\manifest-example> msbuild
MSBuild version 17.7.0-preview-23319-02+6829506b8 for .NET Framework
Build started 8/13/2023 3:07:36 PM.
Project "D:\projects\manifest-example\manifest-example.sln" on node 1 (default targets).
ValidateSolutionConfiguration:
(omitted)
PrepareForBuild:
(omitted)
InitializeBuildStatus:
(omitted)
ComputeStdModulesCompileInputs:
(omitted)
SetModuleDependencies:
VcpkgTripletSelection:
Using triplet "x64-windows" from "D:\vcpkg\installed\x64-windows\"
Using normalized configuration "Debug"
ClCompile:
(omitted)
Link:
(omitted)
AppLocalFromInstalled:
pwsh.exe -ExecutionPolicy Bypass -noprofile -File "D:\vcpkg\scripts\buildsystems\msbuild\applocal.ps1" "D:\projects\manifest-example\x64\Debug\manifest-example.exe"
"D:\vcpkg\installed\x64-windows\debug\bin" "x64\Debug\manifest-example.tlog\manifest-example.write.1u.tlog" "x64\Debug\vcpkg.applocal.log"
D:\projects\manifest-example\x64\Debug\fmtd.dll
FinalizeBuildStatus:
Deleting file "x64\Debug\manifest-example.tlog\unsuccessfulbuild".
Touching "x64\Debug\manifest-example.tlog\manifest-example.lastbuildstate".
Done Building Project "D:\projects\manifest-example\manifest-example.vcxproj" (default targets).
Done Building Project "D:\projects\manifest-example\manifest-example.sln" (default targets).
Build succeeded.
Étapes suivantes
Dans ce tutoriel, vous avez installé des dépendances pour un projet simple à l’aide de vcpkg comme interface de ligne de commande.
Voici quelques tâches supplémentaires à essayer ensuite :
- Installer des packages à l’aide d’un fichier manifeste
- Installez des packages pour les plateformes personnalisées à l’aide de triplets
- Verrouillez vos versions pour des builds reproductibles à l’aide du contrôle de version
- Réutiliser des fichiers binaires lors des exécutions d'intégration continue en utilisant le cache binaire
- Gérez vos bibliothèques privées à l’aide de registres personnalisés