Lernprogramm: Installieren einer Abhängigkeit über die Befehlszeile
Tipp
Die empfohlene Methode zum Installieren Ihrer Abhängigkeiten finden Sie unter "Installieren einer Abhängigkeit aus einer Manifestdatei".
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 Installationsverzeichniszu installieren. In der Regel befindet es sich in %VCPKG_ROOT%/installed
, wobei %VCPKG_ROOT%
das Installationsverzeichnis des vcpkg ist.
In diesem Lernprogramm lernen Sie Folgendes:
Voraussetzungen
- vcpkg
- Ein Terminal
- Ein Code-Editor
- Ein C++-Compiler
- (Optional) CMake oder MSBuild
1 – Erstellen eines Projekts
Erstellen Sie in einem neuen Ordner eine Quelldatei namens main.cxx
mit den folgenden 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 bei https://github.com/Microsoft/vcpkgverfügbar sind.
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: Abhängigkeiten installieren.
Führen Sie den folgenden Befehl aus, um vcpkg in Ihren MSBuild-Projektenzu verwenden:
vcpkg integrate install
Sie müssen den befehl vcpkg integrate install
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. Verwenden Sie vcpkg integrate remove
, um die systemweite MSBuild-Integration zu entfernen.
Diese Integrationsmethode fügt vcpkg-installierte Pakete automatisch zu den folgenden Projekteigenschaften hinzu: Include Directories
, Link Directories
und 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
, fmt
und range-v3
; Diese sind alle in der öffentlichen vcpkg-Registrierung bei https://github.com/Microsoft/vcpkgverfügbar.
Um diese Pakete zu installieren, verwenden Sie den Befehl 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 – Erstellen des Projekts
Wichtig
Stellen Sie sicher, dass das Triplet - Ihrer installierten Pakete mit der Konfiguration Ihres Projekts übereinstimmt. Verwenden Sie x64-windows
oder x64-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 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 Tutorial 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:
- Installieren von Paketen mithilfe einer Manifestdatei
- Installieren Sie mithilfe von Triplets Pakete für benutzerdefinierte Plattformen.
- Sperren Sie mithilfe der Versionierung Ihre Versionen für wiederholbare Builds
- Verwenden Sie bei Continuous Integration-Ausführungen mithilfe der binären Zwischenspeicherung Binärdateien wieder
- Verwalten Ihrer privaten Bibliotheken mithilfe von benutzerdefinierten Registrierungen