Sdílet prostřednictvím


Kurz: Instalace závislosti z příkazového řádku

Spropitné

Doporučené metody instalace závislostí najdete v "Instalace závislosti ze souboru manifestu".

Varování

Některé funkce vcpkg nejsou dostupné v klasickém režimu.

Vcpkg má dva režimy operací: klasický režim a režim manifestu. Tento článek popisuje, jak nainstalovat balíčky pomocí klasického režimu. Pro většinu uživatelů doporučujeme místo toho používat režim manifestu.

V klasickém režimu použijete jako rozhraní příkazového řádku vcpkg k instalaci závislostí do společného instalačního adresáře . Obvykle se nachází v %VCPKG_ROOT%/installed, kde %VCPKG_ROOT% je instalační adresář vcpkg.

V tomto kurzu se naučíte:

Požadavky

  • vcpkg
  • Terminál
  • Editor kódu
  • Kompilátor C++
  • (Volitelné) CMake nebo MSBuild

1. Vytvoření projektu

V nové složce vytvořte zdrojový soubor s názvem main.cxx s následujícím obsahem:

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

Kód odkazuje na opensourcové knihovny: cxxopts, fmta range-v3; které jsou všechny dostupné ve veřejném registru vcpkg v https://github.com/Microsoft/vcpkg.

2. Integrace vcpkg s buildovým systémem

V tomto kroku vám ukážeme, jak integrovat vcpkg s CMake nebo MSBuild, aby se závislosti projektu automaticky nainstalovaly nebo obnovily při každém sestavení projektu.

Pokud používáte jiný systém sestavení, přejděte k dalšímu kroku: Nainstalovat závislosti.

Pokud chcete ve svých projektech MSBuild použítvcpkg, spusťte následující příkaz:

vcpkg integrate install

Příkaz vcpkg integrate install stačí spustit jenom při prvním povolení integrace nástroje MSBuild. To umožňuje integraci nástroje MSBuild pro všechny vaše stávající a budoucí projekty. Pomocí vcpkg integrate remove odeberte systémovou integraci nástroje MSBuild.

Tato metoda integrace automaticky přidá balíčky nainstalované vcpkg do následujících vlastností projektu: Include Directories, Link Directoriesa Link Libraries. Kromě toho se vytvoří akce po sestavení, která zajistí, že se všechny požadované knihovny DLL zkopírují do výstupní složky sestavení. To funguje pro všechna řešení a projekty pomocí sady Visual Studio 2015 nebo novější.

3. Instalace závislostí

Kód odkazuje na opensourcové knihovny: cxxopts, fmta range-v3; všechny jsou k dispozici ve veřejném registru vcpkg v https://github.com/Microsoft/vcpkg.

K instalaci těchto balíčků použijte příkaz 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. Sestavení projektu

Důležitý

Ujistěte se, že triplet nainstalovaných balíčků odpovídá konfiguraci projektu. Použijte x64-windows nebo x64-windows-static pro své 64bitové projekty a x86-windows nebo x86-windows-static pro své 32bitové projekty.

S povolenou integrací celého systému stačí spustit msbuild a sestavit 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.

Další kroky

V tomto kurzu jste nainstalovali závislosti pro jednoduchý projekt pomocí vcpkg jako rozhraní příkazového řádku.

Tady je několik dalších úkolů, které můžete vyzkoušet:

  • Instalace balíčků pomocí souboru manifestu
  • Instalace balíčků pro vlastní platformy pomocí tripletů
  • Zafixujte své verze pro opakovatelné buildy pomocí verzování
  • Opětovné použití binárních souborů v různých bězích kontinuální integrace s využitím mezipaměti pro binární soubory
  • Správa privátních knihoven pomocí vlastních registrů