次の方法で共有


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

Note

この古い例ではクラシック モードを使用していますが、ほとんどの開発者はマニフェスト モードの方が満足しています。 マニフェスト モードへの変換の例については、「マニフェスト モード: 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 キャッシュ フォルダーを削除する必要がある場合があります。 メニューのCMakeCache (<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-windows 用にビルドすると、正しい 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})