共用方式為


安裝和使用套件範例:SQLite

注意

此舊範例使用傳統模式,但大部分開發人員會更滿意指令清單模式。 如需轉換成指令清單模式的範例,請參閱 指令清單模式:CMake 範例

步驟 1:安裝

首先,我們需要知道 SQLite 在埠樹狀結構中所使用的名稱。 若要這樣做,我們將執行 search 命令並檢查輸出:

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

查看清單,我們可以看到埠名為 「sqlite3」。 您也可以在沒有自變數的情況下執行 search 命令,以查看套件的完整清單。

然後安裝就像使用 install 命令一樣簡單。

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))

我們可以執行 命令,檢查是否已順利安裝 x86 Windows 桌面的 list sqlite3。

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

若要安裝其他架構和平臺,例如 通用 Windows 平台 或 x64 Desktop,您可以使用 後綴套件名稱:<target>

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

如需所有支援的目標,請參閱 .\vcpkg help triplet

步驟 2:使用

VS/MSBuild 專案 (全使用者整合)

使用 vcpkg 的建議和最具生產力的方式是透過全使用者整合,讓系統可供您建置的所有專案使用。 全使用者整合會在第一次在指定的計算機上使用時,提示系統管理員存取它,但之後不再需要,而且會根據每個使用者設定整合。

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.

注意

您必須重新啟動 Visual Studio,或執行組建以更新變更的 Intellisense。

您現在可以直接使用檔案 -> Visual Studio 中的新專案,而且連結庫將會自動提供。 針對 SQLite,您可以試用其 C/C++ 範例

若要移除使用者的整合,您可以使用 .\vcpkg integrate remove

CMake (工具鏈檔案)

搭配 cmake 使用已安裝連結庫的最佳方式是透過工具鏈檔案 scripts\buildsystems\vcpkg.cmake。 若要使用此檔案,您只需要將它新增至 CMake 命令行,如下所示:

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

如果您使用 CMake 透過 Open Folder 搭配 Visual Studio,您可以將「變數」區段新增至每個組CMakeSettings.json態來定義CMAKE_TOOLCHAIN_FILE

{
  "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"
    }]
  }]
}

注意

您可能需要刪除每個修改組態的 CMake 快取資料夾,以強制完整重新產生。 在 CMake 選單中,您會在下方 Cache (<configuration name>) 找到 Delete Cache Folders

現在,讓我們使用主要檔案建立簡單的 CMake 專案。

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

然後,我們會以一般 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

注意

針對 x86-windows 建置時,會自動將正確的sqlite3.dll複製到輸出資料夾。 您必須與應用程式一起散發此內容。

處理沒有原生 Cmake 支援的連結庫

不同於其他平臺,我們預設不會自動將 include\ 目錄新增至您的編譯行。 如果您使用未提供 CMake 整合的連結庫,您必須明確地搜尋檔案,並使用和 find_library()自行find_path()新增檔案。

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