英語で読む

次の方法で共有


チュートリアル: Visual Studio Code で CMake でパッケージをインストールして使用する

Terminal options

このチュートリアルでは、CMake、vcpkg、Visual Studio Code で fmt ライブラリを使用する C++ "Hello World" プログラムを作成する方法について説明します。 依存関係のインストール、構成、ビルド、および単純なアプリケーションの実行を行います。

前提条件

1 - vcpkg を設定する

  1. リポジトリの複製

    最初の手順では、GitHub から vcpkg リポジトリを複製します。 リポジトリには、vcpkg 実行可能ファイルを取得するスクリプトと、vcpkg コミュニティによって管理されるキュレーションされたオープンソース ライブラリのレジストリが含まれています。 これを行うには、次を実行します。

    git clone https://github.com/microsoft/vcpkg.git
    

    vcpkg キュレーション レジストリは、2,000 を超えるオープンソース ライブラリのセットです。 これらのライブラリは、vcpkg の継続的インテグレーション パイプラインによって検証され、連携しています。 vcpkg リポジトリにはこれらのライブラリのソース コードは含まれていませんが、レシピとメタデータを保持して、それらをビルドしてシステムにインストールします。

  2. ブートストラップ スクリプトを実行する

    vcpkg リポジトリを複製したら、 vcpkg ディレクトリに移動し、ブートストラップ スクリプトを実行します。

    cd vcpkg && bootstrap-vcpkg.bat
    
    cd vcpkg; .\bootstrap-vcpkg.bat
    
    cd vcpkg && ./bootstrap-vcpkg.sh
    

    ブートストラップ スクリプトは前提条件チェックを実行し、vcpkg 実行可能ファイルをダウンロードします。

    これで完了です。 vcpkg がセットアップされ、使用する準備が整いました。

2 - プロジェクト フォルダーを作成する

注意

Windows でこのチュートリアルを実行し、コンパイラとして MSVC を使用している場合は、VS 用開発者コマンド プロンプトまたは VS 用開発者 PowerShell から Visual Studio Code インスタンスを起動する必要があります。 これにより、コンパイラ パスとその他の環境変数が正しく設定されます。

プロジェクト ファイルを任意の場所に保持するフォルダーを作成します。 このチュートリアルでは、"helloworld" という名前のフォルダーを作成します。 次に、Visual Studio Code を使用してフォルダーを開きます。

mkdir helloworld
code helloworld

3 - Visual Studio Code 拡張機能をインストールする

拡張機能ビューに移動し、 C++ 拡張機能をインストールします。 これにより、C++ IntelliSense とコード ナビゲーションが有効になります。

C++ Visual Studio Code 拡張機能のインストール

C++ 拡張機能を含む Visual Studio Code 拡張機能ビューのスクリーンショット

CMake ツール拡張機能をインストールします。 これにより、Visual Studio Code での CMake のサポートが有効になります。

CMake Tools Visual Studio Code 拡張機能のインストール

CMake ツール拡張機能を使用した Visual Studio Code 拡張機能ビューのスクリーンショット

4 - 環境変数を設定する

  1. VCPKG_ROOT環境変数を構成します。

Visual Studio Code で新しいターミナルを開く: ターミナル > 新しいターミナル

次のコマンドを実行します。

注意

この方法で環境変数を設定すると、現在のターミナル セッションにのみ影響します。 これらの変更をすべてのセッションで永続的にするには、[Windows システム環境変数] パネルで設定します。

$env:VCPKG_ROOT="C:\path\to\vcpkg"
$env:PATH="$env:VCPKG_ROOT;$env:PATH"

vcpkg 環境変数の設定

VCPKG_ROOTを設定し、Visual Studio Code ターミナルの PATH に追加するスクリーンショット。

注意

この方法で環境変数を設定すると、現在のターミナル セッションにのみ影響します。 これらの変更をすべてのセッションで永続的にするには、[Windows システム環境変数] パネルで設定します。

注意

この方法で環境変数を設定すると、現在のターミナル セッションにのみ影響します。 これらの変更をすべてのセッションで永続的にするには、[Windows システム環境変数] パネルで設定します。

set "VCPKG_ROOT=C:\path\to\vcpkg"
set PATH=%VCPKG_ROOT%;%PATH%

注意

export コマンドを使用して環境変数を設定すると、現在のシェル セッションにのみ影響します。 この変更をセッション間で永続的にするには、シェルのプロファイル スクリプト (~/.bashrc~/.zshrcなど) に export コマンドを追加します。

export VCPKG_ROOT=/c/path/to/vcpkg
export PATH=$PATH:$VCPKG_ROOT

VCPKG_ROOT設定すると、Visual Studio Code で vcpkg インスタンスを見つけることができます。 これを PATH に追加すると、シェルから直接 vcpkg コマンドを実行できます。

  1. マニフェスト ファイルを生成し、依存関係を追加します。

次のコマンドを実行して、helloworld フォルダーのルートに 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 ファイルには、プロジェクトの依存関係にminimum バージョンの制約配置する基準線が導入されています。 このファイルの変更は、このチュートリアルの範囲外です。 このチュートリアルでは適用できませんが、 vcpkg-configuration.json ファイルをソース管理の下に置いて、異なる開発環境間でバージョンの一貫性を確保することをお勧めします。

5 - プロジェクト ファイルを設定する

  1. CMakeLists.txt ファイルを作成する

CMakeLists.txtという名前の新しいファイルをプロジェクト フォルダーのルートに作成し、次の内容を指定します。

cmake_minimum_required(VERSION 3.10)

project(HelloWorld)

find_package(fmt CONFIG REQUIRED)

add_executable(HelloWorld helloworld.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 キーワードを使用すると、パッケージが見つからない場合にエラーが生成されます。
  • add_executable(HelloWorld helloworld.cpp): ソース ファイル helloworld.cppからビルドされた "HelloWorld" という名前の実行可能ターゲットを追加します。
  • target_link_libraries(HelloWorld PRIVATE fmt::fmt): HelloWorld 実行可能ファイルが fmt ライブラリに対してリンクする必要があることを指定します。 PRIVATE キーワードは、fmtHelloWorldの構築にのみ必要であり、他の依存プロジェクトには反映されないことを示します。
  1. 次の内容を含む helloworld.cpp ファイルを作成します。
#include <fmt/core.h>

int main()
{
    fmt::print("Hello World!\n");
    return 0;
}

このhelloworld.cpp ファイルには、fmt ライブラリを使用するための<fmt/core.h> ヘッダーが含まれています。 main()関数は、fmt::print()を呼び出して"Hello World!" メッセージをコンソールに出力します。

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"
      }
    }
  ]
}
  1. CMakeUserPresets.json 内容のファイルを "helloworld" ディレクトリに作成します。
{
    "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++ ライブラリを認識できます。 CMakePresets.jsonのみがソース管理にチェックインされ、CMakeUserPresets.jsonはローカルで使用されます。

6 - プロジェクトをビルドして実行する

  1. View > コマンド パレットのコマンド パレットに移動して、プロジェクトのCMake: Build コマンドを実行します

Visual Studio Code の CMake ビルド コマンド

Visual Studio Code で CMake ビルド コマンドを選択するスクリーンショット。

default CMake プリセットを選択します。 これにより、vcpkg ツールチェーンが有効になります。

Visual Studio Code での CMake ビルド コマンドでのプリセットの選択

Visual Studio Code の CMake ビルド コマンドでプリセットを選択するスクリーンショット。

  1. プロジェクトを起動する

以下のプログラムを実行します。

./build/HelloWorld.exe
./build/HelloWorld

次のように出力されるはずです。

Hello World!

次のステップ

vcpkg.jsonの詳細については、リファレンス ドキュメントを参照してください。