Samouczek: instalowanie zależności z wiersza polecenia

Napiwek

Aby uzyskać zalecaną metodę instalowania zależności z pliku manifestu, zobacz "Install a dependency from a manifest file" (Instalowanie zależności z pliku manifestu).

Ostrzeżenie

Niektóre funkcje programu vcpkg nie są dostępne w trybie klasycznym.

Program vcpkg ma dwa tryby operacji: tryb klasyczny i tryb manifestu. W tym artykule opisano sposób instalowania pakietów przy użyciu trybu klasycznego. W przypadku większości użytkowników zalecamy zamiast tego używanie trybu manifestu.

W trybie klasycznym używasz narzędzia vcpkg jako interfejsu wiersza polecenia, aby zainstalować zależności w typowym katalogu instalacyjnym. Zazwyczaj znajduje się w %VCPKG_ROOT%/installedlokalizacji , gdzie %VCPKG_ROOT% znajduje się katalog instalacyjny programu vcpkg.

Z tego samouczka dowiesz się, jak wykonywać następujące elementy:

Wymagania wstępne

  • vcpkg
  • Terminal
  • Edytor kodu
  • Kompilator języka C++
  • (Opcjonalnie) CMake lub MSBuild

1 — Tworzenie projektu

W nowym folderze utwórz plik źródłowy o nazwie o main.cxx następującej zawartości:

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

Kod odwołuje się do bibliotek open source: cxxopts, fmti range-v3; które są dostępne w publicznym rejestrze vcpkg pod adresem https://github.com/Microsoft/vcpkg.

2 — Integrowanie narzędzia vcpkg z systemem kompilacji

W tym kroku pokazano, jak zintegrować narzędzie vcpkg z narzędziem CMake lub MSBuild, dzięki czemu zależności projektu będą automatycznie instalowane lub przywracane podczas kompilowania projektu.

Jeśli używasz innego systemu kompilacji, przejdź do następnego kroku: Instalowanie zależności.

Aby użyć narzędzia vcpkg w projektach MSBuild, uruchom następujące polecenie:

vcpkg integrate install

Wystarczy uruchomić polecenie przy pierwszym włączeniu vcpkg integrate install integracji z programem MSBuild. Umożliwia to integrację programu MSBuild ze wszystkimi istniejącymi i przyszłymi projektami. Użyj vcpkg integrate remove polecenia , aby usunąć integrację w całym systemie MSBuild.

Ta metoda integracji automatycznie dodaje pakiety zainstalowane przez program vcpkg do następujących właściwości projektu: Include Directories, Link Directoriesi Link Libraries. Ponadto spowoduje to utworzenie akcji po kompilacji, która gwarantuje, że wszystkie wymagane biblioteki DLL zostaną skopiowane do folderu wyjściowego kompilacji. Działa to w przypadku wszystkich rozwiązań i projektów korzystających z programu Visual Studio 2015 lub nowszego.

3 — Instalowanie zależności

Kod odwołuje się do bibliotek typu open source: cxxopts, fmti range-v3; są one dostępne w publicznym rejestrze vcpkg pod adresem https://github.com/Microsoft/vcpkg.

Aby zainstalować te pakiety, użyj vcpkg install polecenia .

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 — Kompilowanie projektu

Ważne

Upewnij się, że potrójność zainstalowanych pakietów jest zgodna z konfiguracją projektu. Używaj x64-windows projektów 64-bitowych lub x64-windows-static dla projektów x86-windows 32-bitowych.x86-windows-static

Po włączeniu integracji dla całego systemu wystarczy uruchomić polecenie msbuild , aby skompilować projekt:

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.

Następne kroki

W tym samouczku zainstalowano zależności dla prostego projektu przy użyciu narzędzia vcpkg jako interfejsu wiersza polecenia.

Poniżej przedstawiono kilka dodatkowych zadań, które należy wykonać, aby spróbować wykonać następne czynności:

  • Instalowanie pakietów przy użyciu pliku manifestu
  • Instalowanie pakietów dla niestandardowych platform przy użyciu trypletów
  • Blokowanie wersji dla powtarzalnych kompilacji przy użyciu przechowywania wersji
  • Ponowne używanie plików binarnych w ramach przebiegów ciągłej integracji przy użyciu buforowania binarnego
  • Zarządzanie bibliotekami prywatnymi przy użyciu rejestrów niestandardowych