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

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

前提条件

この例では、Visual Studio C++ 開発ワークロードで C++ MSVC コンパイラを使用します。

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 - 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 拡張機能ビューのスクリーンショット

3 - vcpkg のセットアップ

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

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

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

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

vcpkg 環境変数の設定

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

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

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

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

次のコマンドを実行して、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 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 キーワード (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 - プロジェクトをビルドして実行する

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

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

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

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

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

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

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

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

Hello World!

次のステップ

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