パッケージのインストールと使用の例: SQLite

Note

この古い例ではクラシック モードを使用していますが、ほとんどの開発者はマニフェスト モードの方が満足しています。 マニフェスト モードへの変換の例については、「 Manifest モード: 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))

list コマンドを実行することで、x86 Windows デスクトップ用に 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.

Note

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.

Visual Studio で CMake を使用してフォルダーを開く場合は、各CMakeSettings.json構成に "variables" セクションを追加して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"
    }]
  }]
}

Note

完全な再生成を強制するには、変更された各構成の 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

Note

x86 ウィンドウ用にビルドすると、正しいsqlite3.dllが出力フォルダーに自動的にコピーされます。 これをアプリケーションと共に配布する必要があります。

ネイティブ cmake のサポートなしでライブラリを処理する

他のプラットフォームとは異なり、既定では、 include\ ディレクトリはコンパイル行に自動的に追加されません。 CMake 統合を提供しないライブラリを使用している場合は、ファイルを明示的に検索し、 find_path()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})