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

このチュートリアルでは、CMake、vcpkg、Visual Studio でライブラリを 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 - Visual Studio プロジェクトを設定する

  1. Visual Studio プロジェクトの作成

    • "CMake プロジェクト" テンプレートを使用して Visual Studio で新しいプロジェクトを作成する

    新しい CMake プロジェクトを作成する

    Visual Studio で新しい CMake プロジェクトを作成する方法を示す Visual Studio UI のスクリーンショット

    • プロジェクトに "helloworld" という名前を付けます
    • [ソリューションとプロジェクトを同じディレクトリに配置する] チェック ボックスをオンにします。
    • [作成] ボタンをクリックします

    CMake プロジェクトに名前を付ける

    CMake プロジェクトに名前を付け、[作成] ボタンをクリックするための Visual Studio UI のスクリーンショット。

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

    Visual Studio で組み込みの開発者 PowerShell ウィンドウを開きます。

    組み込みの開発者 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 開発者コマンド プロンプトを開きます。

    開発者コマンド プロンプト用の 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 コマンドをシェルから直接実行できるようになります。

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

    次のコマンドを実行して、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 - プロジェクト ファイルを設定する

  1. 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() します。

  2. ファイルを構成します 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 統合ドキュメント を参照してください。

  3. 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 - プロジェクトをビルドして実行する

  1. プロジェクトをビルドします。

    Visual Studio でプロジェクトをビルドするには、キーを押します Ctrl+Shift+B

  2. アプリケーションを実行します。

    最後に、実行可能ファイルを実行します。

    実行可能ファイルの実行

    実行可能ファイルを実行するための Visual Studio UI のスクリーンショット。

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

    プログラムの出力

    プログラムの出力のスクリーンショット - "Hello World!"

次のステップ

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