チュートリアル: Visual Studio Code で CMake でパッケージをインストールして使用する
このチュートリアルでは、CMake、vcpkg、Visual Studio Code でライブラリを fmt
使用する C++ "Hello World" プログラムを作成する方法について説明します。 依存関係のインストール、構成、ビルド、および単純なアプリケーションの実行を行います。
前提条件
- Visual Studio Code
- C++ コンパイラ
- Windows 7 以降
この例では、Visual Studio C++ 開発ワークロードで C++ MSVC コンパイラを使用します。
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 Code 拡張機能をインストールする
拡張機能ビューに移動し、C++ 拡張機能をインストールします。 これにより、C++ IntelliSense とコード ナビゲーションが有効になります。
C++ 拡張機能を含む Visual Studio Code 拡張機能ビューのスクリーンショット
CMake ツール拡張機能を インストールします。 これにより、Visual Studio Code での CMake のサポートが有効になります。
CMake ツール拡張機能を使用した Visual Studio Code 拡張機能ビューのスクリーンショット
3 - vcpkg のセットアップ
- 環境変数を構成します
VCPKG_ROOT
。
Visual Studio Code で新しいターミナルを開く: ターミナル > の新しいターミナル
次のコマンドを実行します。
$env:VCPKG_ROOT="C:\path\to\vcpkg"
$env:PATH="$env:VCPKG_ROOT;$env:PATH"
VCPKG_ROOTを設定し、Visual Studio Code ターミナルの PATH に追加するスクリーンショット。
Note
この方法で環境変数を設定すると、現在のターミナル セッションにのみ影響します。 これらの変更をすべてのセッションで永続的にするには、[Windows システム環境変数] パネルで設定します。
set "VCPKG_ROOT=C:\path\to\vcpkg"
set PATH=%VCPKG_ROOT%;%PATH%
Note
この方法で環境変数を設定すると、現在のターミナル セッションにのみ影響します。 これらの変更をすべてのセッションで永続的にするには、[Windows システム環境変数] パネルで設定します。
export VCPKG_ROOT=/c/path/to/vcpkg
export PATH=$PATH:$VCPKG_ROOT
Note
コマンドを使用して環境変数を設定すると、 export
現在のシェル セッションにのみ影響します。 この変更をセッション間で永続的にするには、シェルのプロファイル スクリプト (例: ~/.bashrc
または~/.zshrc
) にコマンドを追加export
します。
設定 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 はマニフェスト ファイルを読み取り、インストールする依存関係を学習し、MSBuild と統合して、プロジェクトに必要な依存関係を提供します。
生成されたvcpkg-configuration.json
ファイルには、プロジェクトの依存関係に最小バージョンの制約を設定するベースラインが導入されています。 このファイルの変更は、このチュートリアルの範囲外です。 このチュートリアルでは適用できませんが、異なる開発環境間でバージョンの一貫性を vcpkg-configuration.json
確保するために、ファイルをソース管理の下に置くことをお勧めします。
3 - プロジェクト ファイルを設定する
次の内容の 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
します。
次の内容の helloworld.cpp
ファイルを作成します。
#include <fmt/core.h>
int main()
{
fmt::print("Hello World!\n");
return 0;
}
この helloworld.cpp
ファイルには、ライブラリを <fmt/core.h>
使用するためのヘッダーが fmt
含まれています。 その後、関数は main()
"Hello World!" メッセージをコンソールに出力する呼び出し fmt::print()
を行います。
CMake プロジェクト システムが vcpkg によって提供される C++ ライブラリを認識できるようにするには、ツールチェーン ファイルを vcpkg.cmake
指定する必要があります。 これを自動化するには、次の内容を含む CMakePresets.json
ファイルを "helloworld" ディレクトリに作成します。
{
"version": 2,
"configurePresets": [
{
"name": "vcpkg",
"generator": "Ninja",
"binaryDir": "${sourceDir}/build",
"cacheVariables": {
"CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake"
}
}
]
}
次の内容のファイルを "helloworld" ディレクトリに作成 CMakeUserPresets.json
します。
{
"version": 2,
"configurePresets": [
{
"name": "default",
"inherits": "vcpkg",
"environment": {
"VCPKG_ROOT": "<path to vcpkg>"
}
}
]
}
この CMakePresets.json
ファイルには、CMake 用の 1 つの "vcpkg" プリセットが含まれており、変数が設定されます CMAKE_TOOLCHAIN_FILE
。 これにより CMAKE_TOOLCHAIN_FILE
、CMake プロジェクト システムは vcpkg によって提供される C++ ライブラリを認識できます。 ソース管理CMakeUserPresets.json
にチェックし、ローカルで使用することのみをCMakePresets.json
目的としています。
4 - プロジェクトをビルドして実行する
- コマンド パレットの
CMake: Build
表示>でコマンド パレットに移動して、プロジェクトのコマンドを実行します。
Visual Studio Code で CMake ビルド コマンドを選択するスクリーンショット。
CMake プリセットを選択します default
。 これにより、vcpkg ツールチェーンが有効になります。
Visual Studio Code の CMake ビルド コマンドでプリセットを選択するスクリーンショット。
- プロジェクトを起動する
次のように出力されるはずです。
Hello World!
次のステップ
詳細 vcpkg.json
については、リファレンス ドキュメントを参照してください。
vcpkg
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示