Share via


Esempio di installazione e uso di pacchetti: SQLite

Nota

Questo vecchio esempio usa la modalità classica, ma la maggior parte degli sviluppatori sarà più felice con la modalità Manifesto. Vedere Modalità manifesto: Esempio di CMake per un esempio di conversione in modalità manifesto.

Passaggio 1: installare

Prima di tutto, è necessario conoscere il nome che SQLite passa nell'albero delle porte. A tale scopo, si eseguirà il search comando e si esaminerà l'output:

PS D:\src\vcpkg> .\vcpkg search sqlite
libodb-sqlite        2.4.0            Sqlite support for the ODB ORM library
sqlite3              3.32.1           SQLite is a software library that implements a se...

If your library is not listed, please open an issue at:
    https://github.com/Microsoft/vcpkg/issues

Esaminando l'elenco, è possibile notare che la porta è denominata "sqlite3". È anche possibile eseguire il search comando senza argomenti per visualizzare l'elenco completo dei pacchetti.

L'installazione è quindi semplice come l'uso del install comando .

PS D:\src\vcpkg> .\vcpkg install sqlite3
Computing installation plan...
The following packages will be built and installed:
    sqlite3[core]:x86-windows
Starting package 1/1: sqlite3:x86-windows
Building package sqlite3[core]:x86-windows...
-- Downloading https://sqlite.org/2020/sqlite-amalgamation-3320100.zip...
-- Extracting source C:/src/vcpkg/downloads/sqlite-amalgamation-3320100.zip
-- Applying patch fix-arm-uwp.patch
-- Using source at C:/src/vcpkg/buildtrees/sqlite3/src/3320100-15aeda126a.clean
-- Configuring x86-windows
-- Building x86-windows-dbg
-- Building x86-windows-rel
-- Performing post-build validation
-- Performing post-build validation done
Building package sqlite3[core]:x86-windows... done
Installing package sqlite3[core]:x86-windows...
Installing package sqlite3[core]:x86-windows... done
Elapsed time for package sqlite3:x86-windows: 12 s

Total elapsed time: 12.04 s

The package sqlite3:x86-windows provides CMake targets:

    find_package(unofficial-sqlite3 CONFIG REQUIRED)
    target_link_libraries(main PRIVATE unofficial::sqlite3::sqlite3))

È possibile verificare che sqlite3 sia stato installato correttamente per il desktop di Windows x86 eseguendo il list comando .

PS D:\src\vcpkg> .\vcpkg list
sqlite3:x86-windows         3.32.1           SQLite is a software library that implements a se...

Per installare per altre architetture e piattaforme, ad esempio piattaforma UWP (Universal Windows Platform) o x64 Desktop, è possibile suffisso il nome del pacchetto con :<target>.

PS D:\src\vcpkg> .\vcpkg install sqlite3:x86-uwp zlib:x64-windows

Vedere .\vcpkg help triplet per tutte le destinazioni supportate.

Passaggio 2: Usare

Progetto VS/MSBuild (integrazione a livello di utente)

Il modo consigliato e più produttivo per usare vcpkg consiste nell'integrazione a livello di utente, rendendo il sistema disponibile per tutti i progetti compilati. L'integrazione a livello di utente richiederà l'accesso amministratore la prima volta che viene usata in un determinato computer, ma in seguito non è più necessaria e l'integrazione viene configurata in base all'utente.

PS D:\src\vcpkg> .\vcpkg integrate install
Applied user-wide integration for this vcpkg root.

All C++ projects can now #include any installed libraries.
Linking will be handled automatically.
Installing new libraries will make them instantly available.

Nota

Sarà necessario riavviare Visual Studio o eseguire una compilazione per aggiornare intellisense con le modifiche.

È ora possibile usare semplicemente File -> Nuovo progetto in Visual Studio e la libreria sarà automaticamente disponibile. Per SQLite, è possibile provare il relativo esempio C/C++.

Per rimuovere l'integrazione per l'utente, è possibile usare .\vcpkg integrate remove.

CMake (file toolchain)

Il modo migliore per usare le librerie installate con cmake è tramite il file scripts\buildsystems\vcpkg.cmaketoolchain . Per usare questo file, è sufficiente aggiungerlo alla riga di comando di CMake come:

-DCMAKE_TOOLCHAIN_FILE=D:\src\vcpkg\scripts\buildsystems\vcpkg.cmake.

Se si usa CMake tramite Apri cartella con Visual Studio, è possibile definire CMAKE_TOOLCHAIN_FILE aggiungendo una sezione "variables" a ognuna delle CMakeSettings.json configurazioni:

{
  "configurations": [{
    "name": "x86-Debug",
    "generator": "Visual Studio 15 2017",
    "configurationType" : "Debug",
    "buildRoot":  "${env.LOCALAPPDATA}\\CMakeBuild\\${workspaceHash}\\build\\${name}",
    "cmakeCommandArgs": "",
    "buildCommandArgs": "-m -v:minimal",
    "variables": [{
      "name": "CMAKE_TOOLCHAIN_FILE",
      "value": "D:\\src\\vcpkg\\scripts\\buildsystems\\vcpkg.cmake"
    }]
  }]
}

Nota

Potrebbe essere necessario eliminare la cartella della cache CMake di ogni configurazione modificata per forzare una rigenerazione completa. CMake Nel menu, sotto Cache (<configuration name>) si trova Delete Cache Folders.

A questo punto si creerà un semplice progetto CMake con un file principale.

# CMakeLists.txt
cmake_minimum_required(VERSION 3.0)
project(test)

find_package(unofficial-sqlite3 CONFIG REQUIRED)

add_executable(main main.cpp)

target_link_libraries(main PRIVATE unofficial::sqlite3::sqlite3)
// main.cpp
#include <sqlite3.h>
#include <stdio.h>

int main()
{
    printf("%s\n", sqlite3_libversion());
    return 0;
}

Quindi, creiamo il progetto nel normale modo CMake:

PS D:\src\cmake-test> mkdir build 
PS D:\src\cmake-test> cd build
PS D:\src\cmake-test\build> cmake .. "-DCMAKE_TOOLCHAIN_FILE=D:\src\vcpkg\scripts\buildsystems\vcpkg.cmake"
    // omitted CMake output here //
-- Build files have been written to: D:/src/cmake-test/build
PS D:\src\cmake-test\build> cmake --build .
    // omitted MSBuild output here //
Build succeeded.
    0 Warning(s)
    0 Error(s)

Time Elapsed 00:00:02.38
PS D:\src\cmake-test\build> .\Debug\main.exe
3.15.0

Nota

Il file sqlite3.dll corretto viene copiato automaticamente nella cartella di output durante la compilazione per x86-windows. Sarà necessario distribuirlo insieme all'applicazione.

Gestione delle librerie senza supporto cmake nativo

A differenza di altre piattaforme, la include\ directory non viene aggiunta automaticamente alla riga di compilazione per impostazione predefinita. Se si usa una libreria che non fornisce l'integrazione di CMake, sarà necessario cercare in modo esplicito i file e aggiungerli manualmente usando find_path() e find_library().

# To find and use catch
find_path(CATCH_INCLUDE_DIR catch.hpp)
target_include_directories(main PRIVATE ${CATCH_INCLUDE_DIR})

# To find and use azure-storage-cpp
find_path(WASTORAGE_INCLUDE_DIR was/blob.h)
find_library(WASTORAGE_LIBRARY wastorage)
target_include_directories(main PRIVATE ${WASTORAGE_INCLUDE_DIR})
target_link_libraries(main PRIVATE ${WASTORAGE_LIBRARY})