Tutoriel : Installer une dépendance à partir de la ligne de commande
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%
se trouve le répertoire d’installation de vcpkg.
Ce didacticiel vous apprendra à effectuer les opérations suivantes :
Prérequis
- 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 toutes disponibles dans le registre public vcpkg à l’adresse 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 : Installez les dépendances.
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. Permet vcpkg integrate remove
de supprimer l’intégration à l’échelle du système MSBuild.
Cette méthode d’intégration ajoute automatiquement des packages installés par vcpkg 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 à l’adresse https://github.com/Microsoft/vcpkg.
Pour installer ces packages, utilisez la vcpkg install
commande.
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 msbuild
simplement 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
- Installer des packages pour des plateformes personnalisées à l’aide de triplets
- Verrouiller vos versions pour les builds reproductibles à l’aide du contrôle de version
- Réutiliser des fichiers binaires dans les exécutions d’intégration continue à l’aide de la mise en cache binaire
- Gérer vos bibliothèques privées à l’aide de registres personnalisés