Tutorial: Menginstal dependensi dari baris perintah
Saran
Lihat "Instal dependensi dari file manifes" untuk metode instalasi dependensi yang direkomendasikan.
Peringatan
Beberapa fitur vcpkg tidak tersedia dalam mode klasik.
vcpkg memiliki dua mode operasi: mode klasik, dan mode manifes. Artikel ini menjelaskan cara menginstal paket menggunakan mode klasik. Untuk sebagian besar pengguna, sebaiknya gunakan mode manifes sebagai gantinya.
Dalam mode klasik, Anda menggunakan vcpkg sebagai antarmuka baris perintah untuk menginstal dependensi Anda dalam direktori penginstalan umum. Biasanya, terletak di %VCPKG_ROOT%/installed
, di mana %VCPKG_ROOT%
adalah direktori penginstalan vcpkg.
Dalam tutorial ini, Anda akan belajar untuk:
Prasyarat
- vcpkg
- Sebuah Terminal
- Editor kode
- Pengkompilasi C++
- (Opsional) CMake atau MSBuild
1 - Membuat proyek
Di folder baru, buat file sumber bernama main.cxx
dengan konten ini:
#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));
}
}
Kode mereferensikan pustaka sumber terbuka: cxxopts
, fmt
, dan range-v3
; yang semuanya tersedia di registri publik vcpkg di https://github.com/Microsoft/vcpkg.
2 - Mengintegrasikan vcpkg dengan sistem build Anda
Dalam langkah ini kami menunjukkan kepada Anda cara mengintegrasikan vcpkg dengan CMake atau MSBuild, sehingga dependensi proyek Anda terinstal atau dipulihkan secara otomatis setiap kali Anda membangun proyek.
Jika Anda menggunakan sistem build yang berbeda, lewati ke langkah berikutnya: Instal dependensi.
Untuk menggunakan vcpkg dalam proyek MSBuild Anda, jalankan perintah berikut:
vcpkg integrate install
Anda hanya perlu menjalankan perintah vcpkg integrate install
saat pertama kali anda ingin mengaktifkan integrasi MSBuild. Ini memungkinkan integrasi MSBuild untuk semua proyek Anda yang ada dan yang akan datang. Gunakan vcpkg integrate remove
untuk menghapus integrasi seluruh sistem MSBuild.
Metode integrasi ini secara otomatis menambahkan paket yang diinstal vcpkg ke properti proyek berikut: Include Directories
, Link Directories
, dan Link Libraries
. Selain itu, ini membuat tindakan pasca-build yang memastikan bahwa semua DLL yang dibutuhkan disalin ke dalam folder output build. Ini berfungsi untuk semua solusi dan proyek menggunakan Visual Studio 2015 atau yang lebih baru.
3 - Menginstal dependensi
Kode mereferensikan pustaka sumber terbuka: cxxopts
, fmt
, dan range-v3
; ini semua tersedia di registri publik vcpkg di https://github.com/Microsoft/vcpkg.
Untuk menginstal paket ini, gunakan perintah 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 - Bangun proyek
Penting
Pastikan bahwa triplet dari paket yang diinstal cocok dengan konfigurasi proyek Anda. Gunakan x64-windows
atau x64-windows-static
untuk proyek 64-bit dan x86-windows
atau x86-windows-static
untuk proyek 32-bit Anda.
Dengan integrasi di seluruh sistem diaktifkan, cukup jalankan msbuild
untuk membangun proyek:
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.
Langkah Berikutnya
Dalam tutorial ini, Anda menginstal dependensi untuk proyek sederhana menggunakan vcpkg sebagai antarmuka baris perintah.
Berikut adalah beberapa tugas tambahan untuk dicoba berikutnya:
- Menginstal paket menggunakan file manifes
- Menginstal paket untuk platform kustom menggunakan triplet
- Kunci versi Anda untuk build yang dapat diulang menggunakan versi
- Penggunaan ulang biner dalam seluruh pelaksanaan Integrasi Berkelanjutan menggunakan penembolokan biner
- Mengelola pustaka privat Anda menggunakan registri kustom