チュートリアル: vcpkg でパッケージをインストールして使用する
このチュートリアルでは、CMake と vcpkg でライブラリを使用する C++ "Hello World" プログラムを fmt
作成する方法について説明します。 依存関係のインストール、構成、ビルド、および単純なアプリケーションの実行を行います。
前提条件
Note
Windows ユーザーの場合、Visual Studio の MSVC (Microsoft Visual C++ コンパイラ) は、C++ 開発に必要なコンパイラです。
1 - vcpkg を設定する
リポジトリの複製
最初の手順では、GitHub から vcpkg リポジトリを複製します。 リポジトリには、vcpkg 実行可能ファイルを取得するスクリプトと、vcpkg コミュニティに含まれるキュレーションされたオープンソース ライブラリのレジストリメイン含まれています。 これを行うには、次を実行します。
git clone https://github.com/microsoft/vcpkg.git
vcpkg キュレーション レジストリは、2,000 を超えるオープンソース ライブラリのセットです。 これらのライブラリは、vcpkg の継続的インテグレーション パイプラインによって検証され、連携しています。 vcpkg リポジトリにはこれらのライブラリのソース コードは含まれていませんが、レシピとメタデータを保持して、それらをビルドしてシステムにインストールします。
ブートストラップ スクリプトを実行する
vcpkg リポジトリを複製したら、ディレクトリに移動し
vcpkg
、ブートストラップ スクリプトを実行します。cd vcpkg && bootstrap-vcpkg.bat
cd vcpkg; .\bootstrap-vcpkg.bat
cd vcpkg && ./bootstrap-vcpkg.sh
ブートストラップ スクリプトは、前提条件のチェックを実行し、vcpkg 実行可能ファイルをダウンロードします。
これで完了です。 vcpkg がセットアップされ、使用する準備が整いました。
2 - プロジェクトを設定する
VCPKG_ROOT
環境変数を構成します。export VCPKG_ROOT=/path/to/vcpkg export PATH=$VCPKG_ROOT:$PATH
Note
コマンドを使用して環境変数を設定すると、
export
現在のシェル セッションにのみ影響します。 この変更をセッション間で永続的にするには、シェルのプロファイル スクリプト (例:~/.bashrc
または~/.zshrc
) にコマンドを追加export
します。set VCPKG_ROOT="C:\path\to\vcpkg" set PATH=%VCPKG_ROOT%;%PATH%
Note
この方法で環境変数を設定すると、現在のターミナル セッションにのみ影響します。 これらの変更をすべてのセッションで永続的にするには、[Windows システム環境変数] パネルで設定します。
$env:VCPKG_ROOT = "C:\path\to\vcpkg" $env:PATH = "$env:VCPKG_ROOT;$env:PATH"
Note
この方法で環境変数を設定すると、現在のターミナル セッションにのみ影響します。 これらの変更をすべてのセッションで永続的にするには、[Windows システム環境変数] パネルで設定します。
設定
VCPKG_ROOT
により、vcpkg インスタンスが配置されている場所が vcpkg に指示されます。 これを追加するとPATH
、vcpkg コマンドをシェルから直接実行できるようになります。プロジェクト ディレクトリを作成します。
mkdir helloworld && cd helloworld
3 - 依存関係とプロジェクト ファイルを追加する
マニフェスト ファイルを作成し、依存関係を追加します
fmt
。まず、ディレクトリ内からコマンドを実行
vcpkg new
して、プロジェクトのディレクトリにマニフェスト ファイル (vcpkg.json
) をhelloworld
作成します。vcpkg new --application
次に、依存関係を追加します
fmt
。vcpkg add port fmt
vcpkg.json
は次のようになります。{ "dependencies": [ "fmt" ] }
これはマニフェスト ファイルです。 vcpkg はマニフェスト ファイルを読み取り、インストールする依存関係を学習し、CMake と統合して、プロジェクトに必要な依存関係を提供します。
既定
vcpkg-configuration.json
のファイルにはベースライン制約が導入され、プロジェクトで使用する必要がある依存関係の最小バージョンを指定します。 このファイルの変更は、このチュートリアルの範囲外ですが、プロジェクトの依存関係のバージョン制約を定義する上で重要な役割を果たします。 そのため、このチュートリアルでは厳密に必要ではありませんが、異なる開発環境間でバージョンの整合性を確保するためにソース管理に追加vcpkg-configuration.json
することをお勧めします。プロジェクト ファイルを作成します。
次の内容の
CMakeLists.txt
ファイルを作成します。cmake_minimum_required(VERSION 3.10) project(HelloWorld) find_package(fmt CONFIG REQUIRED) add_executable(HelloWorld main.cpp) target_link_libraries(HelloWorld PRIVATE fmt::fmt)
次に、ファイル内の各行の動作を
CMakeLists.txt
分解しましょう。cmake_minimum_required(VERSION 3.10)
: プロジェクトのビルドに必要な CMake の最小バージョンが 3.10 であることを指定します。 システムにインストールされている CMake のバージョンがこれより低い場合は、エラーが生成されます。project(HelloWorld)
: プロジェクトの名前を "HelloWorld" に設定します。find_package(fmt CONFIG REQUIRED)
: CMake 構成ファイルをfmt
使用してライブラリを検索します。REQUIRED
キーワード (keyword)により、パッケージが見つからない場合にエラーが生成されます。add_executable(HelloWorld main.cpp)
: ソース ファイルmain.cpp
からビルドされた "HelloWorld" という名前の実行可能ターゲットを追加します。target_link_libraries(HelloWorld PRIVATE fmt::fmt)
: 実行可能ファイルがライブラリにHelloWorld
対してfmt
リンクする必要があることを指定します。 キーワード (keyword)はPRIVATE
、ビルドHelloWorld
にのみ必要であり、他の依存プロジェクトには反映されないことを示fmt
します。
次の内容の
main.cpp
ファイルを作成します。#include <fmt/core.h> int main() { fmt::print("Hello World!\n"); return 0; }
この
main.cpp
ファイルには、ライブラリを<fmt/core.h>
使用するためのヘッダーがfmt
含まれています。 その後、関数はmain()
"Hello World!" メッセージをコンソールに出力する呼び出しfmt::print()
を行います。
4 - プロジェクトをビルドして実行する
CMake 構成を実行する
CMake プロジェクト システムが vcpkg によって提供される C++ ライブラリを認識できるようにするには、ツールチェーン ファイルを
vcpkg.cmake
指定する必要があります。 これを自動化するには、次の内容を含むCMakePresets.json
ファイルを "helloworld" ディレクトリに作成します。{ "version": 2, "configurePresets": [ { "name": "default", "generator": "Ninja", "binaryDir": "${sourceDir}/build", "cacheVariables": { "CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake" } } ] }
この
CMakePresets.json
ファイルには、CMake 用の 1 つの "既定" プリセットが含まれており、変数が設定されますCMAKE_TOOLCHAIN_FILE
。 これによりCMAKE_TOOLCHAIN_FILE
、CMake プロジェクト システムは vcpkg によって提供される C++ ライブラリを認識できます。 この追加により、CMakePresets.json
CMake の実行時にツールチェーンを指定するプロセスが自動化されます。CMake を使用してビルドを構成します。
cmake --preset=default
プロジェクトをビルドする
実行 (Run):
cmake --build build
アプリケーションの実行
最後に、実行可能ファイルを実行して、アプリケーションの動作を確認します。
./build/HelloWorld Hello World!
.\build\HelloWorld.exe Hello World!
次のステップ
詳細 vcpkg.json
については、リファレンス ドキュメントを参照してください。
vcpkg
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示