Partager via


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, fmtet 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 Directorieset 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, fmtet 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 :