チュートリアル: Visual Studio で CMake でパッケージをインストールして使用する
このチュートリアルでは、CMake、vcpkg、Visual Studio でライブラリを fmt
使用する C++ "Hello World" プログラムを作成する方法について説明します。 依存関係のインストール、構成、ビルド、および単純なアプリケーションの実行を行います。
前提条件
- Visual Studio と C++ 開発ワークロードと CMake コンポーネント
- Git
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 - Visual Studio プロジェクトを設定する
Visual Studio プロジェクトの作成
- "CMake プロジェクト" テンプレートを使用して Visual Studio で新しいプロジェクトを作成する
Visual Studio で新しい CMake プロジェクトを作成する方法を示す Visual Studio UI のスクリーンショット
- プロジェクトに "helloworld" という名前を付けます
- [ソリューションとプロジェクトを同じディレクトリに配置する] チェック ボックスをオンにします。
- [作成] ボタンをクリックします
CMake プロジェクトに名前を付け、[作成] ボタンをクリックするための Visual Studio UI のスクリーンショット。
VCPKG_ROOT
環境変数を構成します。Visual Studio で組み込みの開発者 PowerShell ウィンドウを開きます。
組み込みの PowerShell 開発者ウィンドウの Visual Studio UI のスクリーンショット
次のコマンドを実行します。
$env:VCPKG_ROOT = "C:\path\to\vcpkg" $env:PATH = "$env:VCPKG_ROOT;$env:PATH"
VCPKG_ROOTを設定して PATH に追加する方法を示す、組み込みの PowerShell 開発者ウィンドウの Visual Studio UI のスクリーンショット。
Note
この方法で環境変数を設定すると、現在のターミナル セッションにのみ影響します。 これらの変更をすべてのセッションで永続的にするには、[Windows システム環境変数] パネルで設定します。
Visual Studio で開発者コマンド プロンプトを開きます。
開発者コマンド プロンプト用の Visual Studio UI のスクリーンショット。
次のコマンドを実行します。
set "VCPKG_ROOT=C:\path\to\vcpkg" set PATH=%VCPKG_ROOT%;%PATH%
VCPKG_ROOTを設定して PATH に追加する方法を示す Visual Studio 開発者コマンド プロンプトのスクリーンショット。
Note
この方法で環境変数を設定すると、現在のターミナル セッションにのみ影響します。 これらの変更をすべてのセッションで永続的にするには、[Windows システム環境変数] パネルで設定します。
設定
VCPKG_ROOT
は、Visual Studio が vcpkg インスタンスを見つけるのに役立ちます。 これを追加するとPATH
、vcpkg コマンドをシェルから直接実行できるようになります。マニフェスト ファイルを生成し、依存関係を追加します。
次のコマンドを実行して、vcpkg マニフェスト ファイル (
vcpkg.json
) を作成します。vcpkg new --application
このコマンドは
vcpkg new
、プロジェクトのvcpkg.json
ディレクトリにファイルとvcpkg-configuration.json
ファイルを追加します。依存関係としてパッケージを追加します
fmt
。vcpkg add port fmt
次のものが
vcpkg.json
含まれるはずです。{ "dependencies": [ "fmt" ] }
これはマニフェスト ファイルです。 vcpkg はマニフェスト ファイルを読み取り、インストールする依存関係を学習し、CMake と統合して、プロジェクトに必要な依存関係を提供します。
生成された
vcpkg-configuration.json
ファイルには、プロジェクトの依存関係に最小バージョンの制約を設定するベースラインが導入されています。 このファイルの変更は、このチュートリアルの範囲外です。 このチュートリアルでは適用できませんが、異なる開発環境間でバージョンの一貫性をvcpkg-configuration.json
確保するために、ファイルをソース管理の下に置くことをお勧めします。
3 - プロジェクト ファイルを設定する
helloworld.cpp
ファイルを変更します。の内容を次の
helloworld.cpp
コードに置き換えます。#include <fmt/core.h> int main() { fmt::print("Hello World!\n"); return 0; }
このソース ファイルには、ライブラリの
<fmt/core.h>
一部であるヘッダーがfmt
含まれています。 この関数はmain()
、コンソールに "Hello World!" メッセージを出力するために呼び出fmt::print()
します。ファイルを構成します
CMakePresets.json
。CMakePresets.json
ファイルの名前をCMakeUserPresets.json
に変更します- その内容を次のように更新します。 vcpkg ディレクトリへのパスに置き換えます
<VCPKG_ROOT>
。
{ "version": 2, "configurePresets": [ { "name": "default", "generator": "Ninja", "binaryDir": "${sourceDir}/build", "cacheVariables": { "CMAKE_TOOLCHAIN_FILE": "<VCPKG_ROOT>/scripts/buildsystems/vcpkg.cmake" } } ] }
- このファイルにはハードコーディングされた絶対パスが含まれるため、このファイルをソース管理下に置かないようにすることをお勧めします。 Git を使用している場合は、ファイルに追加
CMakeUserPresets.json
します.gitignore
。
ファイルには
CMakeUserPresets.json
"default" という名前のプリセットが 1 つ含まれています。このプリセットは、vcpkg の CMake ツールチェーン ファイルを使用するように設定CMAKE_TOOLCHAIN_FILE
します。 これにより、プロジェクトを構成してビルドするときに、vcpkg が CMake にパッケージを提供できるようになります。 詳細については、 vcpkg CMake 統合ドキュメント を参照してください。CMakeLists.txt
ファイルを編集します。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 helloworld.cpp)
: ソース ファイルhelloworld.cpp
からビルドされた "HelloWorld" という名前の実行可能ターゲットを追加します。target_link_libraries(HelloWorld PRIVATE fmt::fmt)
: 実行可能ファイルがライブラリにHelloWorld
対してfmt
リンクする必要があることを指定します。 キーワード (keyword)はPRIVATE
、ビルドHelloWorld
にのみ必要であり、他の依存プロジェクトには反映されないことを示fmt
します。
4 - プロジェクトをビルドして実行する
プロジェクトをビルドします。
Visual Studio でプロジェクトをビルドするには、キーを押します
Ctrl+Shift+B
。アプリケーションを実行します。
最後に、実行可能ファイルを実行します。
実行可能ファイルを実行するための Visual Studio UI のスクリーンショット。
次のように出力されるはずです。
プログラムの出力のスクリーンショット - "Hello World!"
次のステップ
詳細 vcpkg.json
については、リファレンス ドキュメントを参照してください。
vcpkg