Auf Englisch lesen

Freigeben über


Lernprogramm: Installieren einer Abhängigkeit über die Befehlszeile

Tipp

Unter "Installieren einer Abhängigkeit aus einer Manifestdatei" finden Sie die empfohlene Methode zum Installieren Ihrer Abhängigkeiten.

Warnung

Einige vcpkg-Features sind im klassischen Modus nicht verfügbar.

vcpkg verfügt über zwei Betriebsmodi: klassischen Modus und Manifestmodus. In diesem Artikel wird beschrieben, wie Pakete im klassischen Modus installiert werden. Für die meisten Benutzer empfehlen wir stattdessen die Verwendung des Manifestmodus.

Im klassischen Modus verwenden Sie vcpkg als Befehlszeilenschnittstelle, um Ihre Abhängigkeiten in einem allgemeinen Installationsverzeichnis zu installieren. Befindet sich in der Regel in %VCPKG_ROOT%/installeddem %VCPKG_ROOT% Installationsverzeichnis des vcpkg.

In diesem Tutorial lernen Sie Folgendes:

Voraussetzungen

  • vcpkg
  • Ein Terminal
  • Ein Code-Editor
  • einen C++-Compiler
  • (Optional) CMake oder MSBuild

1 – Erstellen eines Projekts

Erstellen Sie in einem neuen Ordner eine Quelldatei mit den folgenden main.cxx Inhalten:

#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));
  }
}

Der Code verweist auf die Open-Source-Bibliotheken: cxxopts, fmt, und range-v3; die alle in der öffentlichen vcpkg-Registrierung verfügbar sind.https://github.com/Microsoft/vcpkg

2 – Integrieren von vcpkg in Ihr Buildsystem

In diesem Schritt zeigen wir Ihnen, wie Sie vcpkg in CMake oder MSBuild integrieren, damit Ihre Projektabhängigkeiten automatisch installiert oder wiederhergestellt werden, wenn Sie das Projekt erstellen.

Wenn Sie ein anderes Buildsystem verwenden, fahren Sie mit dem nächsten Schritt fort: Installieren von Abhängigkeiten.

Um vcpkg in Ihren MSBuild-Projekten zu verwenden, führen Sie den folgenden Befehl aus:

vcpkg integrate install

Sie müssen den vcpkg integrate install Befehl nur ausführen, wenn Sie die MSBuild-Integration zum ersten Mal aktivieren möchten. Dies ermöglicht die MSBuild-Integration für alle vorhandenen und zukünftigen Projekte. Wird vcpkg integrate remove verwendet, um die systemweite MSBuild-Integration zu entfernen.

Diese Integrationsmethode fügt automatisch vcpkg-installierte Pakete zu den folgenden Projekteigenschaften hinzu: Include Directories, , Link Directoriesund Link Libraries. Darüber hinaus wird eine Nachbuildaktion erstellt, die sicherstellt, dass alle erforderlichen DLLs in den Buildausgabeordner kopiert werden. Dies funktioniert für alle Lösungen und Projekte mit Visual Studio 2015 oder höher.

3 – Installieren von Abhängigkeiten

Der Code verweist auf die Open-Source-Bibliotheken: cxxopts, , und range-v3; diese sind alle in der öffentlichen vcpkg-Registrierung verfügbar unter https://github.com/Microsoft/vcpkgfmt.

Um diese Pakete zu installieren, verwenden Sie den vcpkg install Befehl.

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 – Erstellen des Projekts

Wichtig

Stellen Sie sicher, dass das Triplet Ihrer installierten Pakete mit der Konfiguration Ihres Projekts übereinstimmt. Verwenden Oder x64-windowsx64-windows-static für Ihre 64-Bit-Projekte und x86-windows oder x86-windows-static für Ihre 32-Bit-Projekte.

Wenn die systemweite Integration aktiviert ist, führen Sie einfach eine Ausführung msbuild aus, um das Projekt zu erstellen:

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.

Nächste Schritte

In diesem Lernprogramm haben Sie Abhängigkeiten für ein einfaches Projekt mithilfe von vcpkg als Befehlszeilenschnittstelle installiert.

Hier sind einige zusätzliche Aufgaben, die Sie als Nächstes ausprobieren können: