Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Napiwek
Aby uzyskać zalecaną metodę instalowania zależności, zobacz "Instalowanie zależności z manifest pliku ".
Ostrzeżenie
Niektóre funkcje programu vcpkg nie są dostępne w trybie classic.
Vcpkg ma dwa tryby operacji: classic tryb i manifest tryb. W tym artykule opisano sposób instalowania pakietów przy użyciu classic trybu. W przypadku większości użytkowników zalecamy zamiast tego używanie manifest trybu.
W classic trybie używasz narzędzia vcpkg jako interfejsu wiersza polecenia, aby zainstalować zależności w typowym katalogu instalacyjnym. Zazwyczaj znajduje się w %VCPKG_ROOT%/installed, gdzie %VCPKG_ROOT% jest katalog instalacyjny vcpkg.
Z tego samouczka dowiesz się, jak wykonywać następujące elementy:
Warunki 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 main.cxx o 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 rejestrze publicznym vcpkg w 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: Zainstaluj zależności.
- MSBuild
- narzędzia CMake
Aby użyć vcpkg w projektach MSBuild, uruchom następujące polecenie:
vcpkg integrate install
Wystarczy uruchomić polecenie vcpkg integrate install po raz pierwszy, aby włączyć integrację programu MSBuild. Umożliwia to integrację programu MSBuild ze wszystkimi istniejącymi i przyszłymi projektami. Użyj vcpkg integrate remove, aby usunąć integrację z całym systemem MSBuild.
Ta metoda integracji automatycznie dodaje zainstalowane pakiety 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 open source: cxxopts, fmti range-v3; są one dostępne w rejestrze publicznym vcpkg w https://github.com/Microsoft/vcpkg.
Aby zainstalować te pakiety, użyj polecenia 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 — Kompilowanie projektu
Ważny
Upewnij się, że triplet twoich zainstalowanych pakietów odpowiada konfiguracji twojego projektu. Użyj x64-windows lub x64-windows-static dla projektów 64-bitowych i x86-windows lub x86-windows-static dla projektów 32-bitowych.
- MSBuild
- programu Visual Studio
- narzędzia CMake
Po włączeniu integracji dla całego systemu wystarczy uruchomić 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 zainstalowałeś zależności dla prostego projektu, wykorzystując vcpkg jako interfejs 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 manifest pliku
- Instaluj pakiety dla platform niestandardowych przy użyciu tripletów
- Blokuj swoje wersje, aby uzyskać powtarzalne kompilacje, używając wersjonowania
- Ponowne używanie plików binarnych w ramach procesów ciągłej integracji z użyciem buforowania binarnego
- Zarządzaj swoimi prywatnymi bibliotekami przy użyciu rejestrów niestandardowych.