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%/installed
dem %VCPKG_ROOT%
Installationsverzeichnis des vcpkg.
In diesem Tutorial lernen Sie Folgendes:
- vcpkg
- Ein Terminal
- Ein Code-Editor
- einen C++-Compiler
- (Optional) CMake oder MSBuild
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
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 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.
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)
Wichtig
Stellen Sie sicher, dass das Triplet Ihrer installierten Pakete mit der Konfiguration Ihres Projekts übereinstimmt. Verwenden Oder x64-windows
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 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.
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:
- Installieren von Paketen mithilfe einer Manifestdatei
- Installieren von Paketen für benutzerdefinierte Plattformen mithilfe von Triplets
- Sperren der Versionen für wiederholbare Builds mithilfe der Versionsverwaltung
- Wiederverwenden von Binärdateien in fortlaufender Integration mithilfe der binären Zwischenspeicherung
- Verwalten Ihrer privaten Bibliotheken mithilfe benutzerdefinierter Registrierungen
Feedback zu vcpkg
vcpkg ist ein Open Source-Projekt. Wählen Sie einen Link aus, um Feedback zu geben: