Alcune funzionalità di vcpkg non sono disponibili in modalità classica.
vcpkg ha due modalità operativa: la modalità classica e la modalità manifesto. Questo articolo descrive come installare i pacchetti usando la modalità classica. Per la maggior parte degli utenti è consigliabile usare invece la modalità manifesto.
In modalità classica si usa vcpkg come interfaccia della riga di comando per installare le dipendenze in una directory di installazione comune. In genere, si trova in %VCPKG_ROOT%/installed, dove %VCPKG_ROOT% è la directory di installazione di vcpkg.
In una nuova cartella creare un file di origine denominato main.cxx con questi contenuti:
#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));
}
}
Il codice fa riferimento alle librerie open source: cxxopts, fmte range-v3, che sono tutte disponibili nel registro pubblico vcpkg all'indirizzo https://github.com/Microsoft/vcpkg.
2 - Integrare vcpkg con il sistema di compilazione
In questo passaggio viene illustrato come integrare vcpkg con CMake o MSBuild, in modo che le dipendenze del progetto vengano installate o ripristinate automaticamente ogni volta che si compila il progetto.
Se si usa un sistema di compilazione diverso, passare al passaggio successivo: Installare le dipendenze.
È sufficiente eseguire il comando la prima volta che si vuole abilitare l'integrazione vcpkg integrate install di MSBuild. In questo modo si abilita l'integrazione di MSBuild per tutti i progetti esistenti e futuri. Usare vcpkg integrate remove per rimuovere l'integrazione a livello di sistema di MSBuild.
Questo metodo di integrazione aggiunge automaticamente i pacchetti installati da vcpkg alle proprietà del progetto seguenti: Include Directories, Link Directoriese Link Libraries. Viene inoltre creata un'azione di post-compilazione che garantisce che tutte le DLL necessarie vengano copiate nella cartella di output della compilazione. Questa soluzione funziona per tutte le soluzioni e i progetti che usano Visual Studio 2015 o versione successiva.
Per usare vcpkg nei progetti CMake, è necessario impostare la variabile per usare il CMAKE_TOOLCHAIN_FILE file toolchain CMake di vcpkg. La toolchain vcpkg è in %VCPKG_ROOT%/scripts/buildsystems/vcpkg.cmake, dove %VCPKG_ROOT% è il percorso di installazione vcpkg.
Per impostare il file toolchain, utilizzare uno di questi metodi:
CMAKE_TOOLCHAIN_FILE Impostare nel file CMakePresets.json.
Passare -DCMAKE_TOOLCHAIN_FILE=<path/to/vcpkg>/scripts/buildsystems/vcpkg.cmake come parametro nella chiamata di configurazione di CMake.
Impostare la CMAKE_TOOLCHAIN_FILE variabile CMake prima della prima chiamata a project() nel CMakeLists.txt file.
3 - Installare le dipendenze
Il codice fa riferimento alle librerie open source: cxxopts, fmte range-v3. Sono tutti disponibili nel registro pubblico vcpkg all'indirizzo https://github.com/Microsoft/vcpkg.
Per installare questi pacchetti, usare il vcpkg install comando .
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 - Compilare il progetto
Importante
Assicurarsi che il triplo dei pacchetti installati corrisponda alla configurazione del progetto. Usare x64-windows o x64-windows-static per i progetti a 64 bit e x86-windows o x86-windows-static per i progetti a 32 bit.
Eseguire il comando seguente: cmake -B build -S . -DCMAKE_TOOLCHAIN_FILE=%VCPKG_ROOT%\scripts\buildsystems\vcpkg.cmake, ma sostituire %VCPKG_ROOT% con il percorso di installazione di vcpkg.
PS D:\projects\manifest-example> cmake -B build -S . -DCMAKE_TOOLCHAIN_FILE=D:/vcpkg/scripts/buildsystems/vcpkg.cmake
-- Building for: Visual Studio 17 2022
-- Selecting Windows SDK version 10.0.19041.0 to target Windows 10.0.25921.
-- The CXX compiler identification is MSVC 19.37.32814.0
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: C:/Program Files/Microsoft Visual Studio/2022/Preview/VC/Tools/MSVC/14.37.32814/bin/Hostx64/x64/cl.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: D:/projects/manifest-example/build
3 - Compilare il progetto CMake
Eseguire il comando seguente per compilare il progetto: : cmake --build build
PS D:\projects\manifest-example> cmake --build build
MSBuild version 17.7.0-preview-23319-02+6829506b8 for .NET Framework
Checking Build System
Building Custom Rule D:/projects/manifest-example/CMakeLists.txt
main.cxx
fibo.vcxproj -> D:\projects\manifest-example\build\Debug\fibo.exe
Building Custom Rule D:/projects/manifest-example/CMakeLists.txt
Passaggi successivi
In questa esercitazione sono state installate dipendenze per un progetto semplice usando vcpkg come interfaccia della riga di comando.
L'origine di questo contenuto è disponibile in GitHub, in cui è anche possibile creare ed esaminare i problemi e le richieste pull. Per ulteriori informazioni, vedere la guida per i collaboratori.
Feedback su vcpkg
vcpkg è un progetto di open source. Selezionare un collegamento per fornire feedback:
Come creare un progetto .NET, con informazioni su come aggiungere pacchetti e gestire le dipendenze dei pacchetti nel progetto. Usare l'interfaccia della riga di comando di .NET Core e il registro NuGet per aggiungere librerie e strumenti alle applicazioni C# tramite Visual Studio Code.