CMake のビルド設定をカスタマイズする
Visual Studio では CMake の構成ファイルを使用して CMake の生成とビルドを行います。 CMakePresets.json
は Visual Studio 2019 バージョン 16.10 以降でサポートされており、推奨される CMake 構成ファイルです。 CMakePresets.json
は CMake によって直接サポートされており、Visual Studio、VS Code、継続的インテグレーション パイプライン、Windows、Linux、Mac のコマンド ラインから CMake の生成とビルドを行うために使用できます。 CMakePresets.json
の詳細については、CMake プリセットを使用した構成とビルドに関する記事を参照してください。
CMake ビルド構成に CMakeSettings.json
ファイルを使用するプロジェクトを管理している場合、Visual Studio 2019 以降のバージョンでは CMake 設定エディターが提供されます。 このエディターを使用すると、CMake 構成の追加や、構成の設定のカスタマイズが簡単に行えます。 これは、CMakeSettings.json
ファイルを手動で編集するよりも簡単な方法です。 それでもファイルを直接編集したい場合は、エディターの右上にある [JSON の編集] リンクを選択できます。
CMake 設定エディターを開くには、メイン ツール バーの [構成] ドロップダウンを選択して [構成の管理] を選択します。
インストールされている構成が左側に示された設定エディターが表示されます。
左側のウィンドウに、インストールされている構成 (x86-Debug) が表示されます。 右側のウィンドウに、選択した構成の設定が表示されます。 設定には、構成名、構成の種類 (Debug に設定)、ツールセット (msvc_x86 に設定)、CMake ツールチェーン ファイル (空)、ビルド ルート (${env:USERPROFILE}\CMakeBuilds\${workspaceHash}\build\${name} を含む)、CMake コマンド引数 (空)、ビルド コマンド引数 (-v) が含まれます。
Visual Studio では、1 つの x64-Debug
構成が既定で提供されています。 緑色のプラス記号を選択して、構成を追加できます。 エディターに表示される設定は、選択した構成によって異なる場合があります。
エディターで選択したオプションは、CMakeSettings.json
という名前のファイルに書き込まれます。 このファイルで指定されているコマンド ライン引数と環境変数は、プロジェクトをビルドするときに CMake に渡されます。 Visual Studio で CMakeLists.txt
が自動的に変更されることはありません。CMakeSettings.json
を使うことにより、Visual Studio でビルドをカスタマイズしながら、CMake プロジェクト ファイルは変更されないようにして、チームの他のメンバーが任意のツールでそれを使用できるようにすることができます。
CMake の全般設定
[全般] では、次の設定を使用できます。
構成名
name の設定に対応します。 この名前は C++ の構成ドロップダウンに表示されます。 ${name}
マクロを使って、パスなどの他のプロパティ値を作成できます。
構成のタイプ
configurationType の設定に対応します。 選択したジェネレーターのビルド構成の種類を定義します。 現在サポートされている値は、Debug、MinSizeRel、Release、RelWithDebInfo です。 CMAKE_BUILD_TYPE
にマップされます。
ツールセット
inheritedEnvironments の設定に対応します。 選択した構成のビルドに使用されるコンパイラ環境を定義します。 サポートされる値は、構成の種類によって異なります。 カスタム環境を作成するには、設定エディターの右上隅にある [JSON の編集] リンクを選択し、CMakeSettings.json
ファイルを直接編集します。
CMake ツールチェーン ファイル
CMake ツールチェーン ファイルへのパスです。 このパスは、"-DCMAKE_TOOLCHAIN_FILE = <filepath>
として CMake に渡されます。 ツールチェーン ファイルは、コンパイラとツールチェーン ユーティリティの場所、および他のターゲット プラットフォームとコンパイラに関連する情報を指定します。 既定では、この設定が指定されていない場合、Visual Studio で vcpkg ツールチェーン ファイル が使用されます。
ビルド ルート
buildRoot に対応します。 CMAKE_BINARY_DIR
にマップされ、CMake キャッシュを作成する場所を指定します。 指定されたフォルダーが存在しない場合は作成されます。
コマンド引数
[コマンド引数] では、次の設定を使用できます。
CMake コマンド引数
cmakeCommandArgs に対応します。 CMake に渡されるコマンド ライン オプションをさらに指定します。
ビルド コマンド引数
buildCommandArgs に対応します。 基礎となるビルド システムに渡されるスイッチをさらに指定します。 たとえば、Ninja ジェネレーターの使用時に -v
を渡すと、コマンド ラインの出力が Ninja に強制されます。
CTest コマンド引数
ctestCommandArgs に対応します。 テストの実行中に CTest に渡すコマンド ライン オプションをさらに指定します。
リモート ビルドの全般設定
リモート ビルドを使う Linux などの構成では、次の設定も使用できます。
rsync
コマンド引数
rsync
に渡される追加のコマンド ライン オプションであり、高速で多用途のファイル コピー ツールです。
CMake 変数とキャッシュ
これらの設定を使うと、CMake 変数を設定し、それらを CMakeSettings.json
に保存できます。 それらはビルド時に CMake に渡され、CMakeLists.txt
ファイルの値はすべてそれらによってオーバーライドされます。 CMakeGUI と同じ方法でこのセクションを使用し、編集できるすべての CMake 変数の一覧を表示できます。 [キャッシュの保存と生成] ボタンを選択して、高度な変数 (CMakeGUI ごと) を含む編集可能なすべての CMake 変数の一覧を表示します。 変数名で一覧をフィルター処理できます。
variables に対応します。 -D name=value
として CMake に渡される CMake 変数の名前と値のペアを含みます。 CMake プロジェクトのビルド命令で CMake キャッシュ ファイルに直接変数を追加するように指定している場合は、代わりにここで追加することをお勧めします。
詳細設定
CMake ジェネレーター
generator に対応します。 CMake -G
スイッチにマップされ、使用する CMake ジェネレーターを指定します。 他のプロパティ値を作成するときに、このプロパティをマクロ ${generator}
として使うこともできます。 現在、Visual Studio では次の CMake ジェネレーターがサポートされています。
- "Ninja"
- "Unix Makefiles"
- "Visual Studio 16 2019"
- "Visual Studio 16 2019 Win64"
- "Visual Studio 16 2019 ARM"
- "Visual Studio 15 2017"
- "Visual Studio 15 2017 Win64"
- "Visual Studio 15 2017 ARM"
- "Visual Studio 14 2015"
- "Visual Studio 14 2015 Win64"
- "Visual Studio 14 2015 ARM"
Ninja は柔軟性や機能ではなく、ビルド速度が速いことを目的に設計されているため、既定値としてこれが設定されます。 ただし、CMake プロジェクトによっては、Ninja を使うと正しくビルドできないことがあります。 そのような場合は、代わりに Visual Studio プロジェクトを生成するように CMake に指示できます。
IntelliSense モード
IntelliSense エンジンによって使用される IntelliSense モード。 モードが選択されていない場合、Visual Studio では指定されたツールセットからモードを継承します。
インストール ディレクトリ
CMake によってターゲットがインストールされるディレクトリです。 CMAKE_INSTALL_PREFIX
にマップされます。
CMake 実行可能ファイル
CMake プログラムの実行可能ファイルへの完全なパス。ファイル名と拡張子を含めます。 これにより、Visual Studio でカスタム バージョンの CMake を使用できます。 リモート ビルドの場合は、リモート マシン上の CMake の場所を指定します。
リモート ビルドを使う Linux などの構成では、次の設定も使用できます。
リモート CMakeLists.txt ルート
ルート CMakeLists.txt
ファイルが含まれるリモート マシン上のディレクトリです。
リモート インストール ルート
CMake によってターゲットがインストールされるリモート マシン上のディレクトリです。 CMAKE_INSTALL_PREFIX
にマップされます。
ソースのリモート コピー
ソース ファイルをリモート マシンにコピーするかどうかを指定し、rsync または sftp を使用するかどうかを指定できます。
CMakeSettings.json を直接編集する
CMakeSettings.json
を直接編集して、カスタム構成を作成することもできます。 設定エディターの右上には [JSON の編集] ボタンがあり、編集用にファイルを開くことができます。
次の例では、作業を始めるときに使用できるサンプルの構成を示します。
{
"name": "x86-Debug",
"generator": "Ninja",
"configurationType": "Debug",
"inheritEnvironments": [ "msvc_x86" ],
"buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}",
"installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}",
"cmakeCommandArgs": "",
"buildCommandArgs": "-v",
"ctestCommandArgs": ""
},
JSON の IntelliSense は、CMakeSettings.json
ファイルを編集するときに役立ちます。
JSON エディターでは、互換性のない設定を選択したときも通知されます。
ファイルの各プロパティについて詳しくは、「CMakeSettings.json スキーマ リファレンス」をご覧ください。
Visual Studio 2017 では、特定のプロジェクトの CMake キャッシュを作成するために CMake が呼び出される方法を定義する複数の CMake 構成が用意されています。 新しい構成を追加するには、ツール バーの [構成] ドロップダウンを選択して [構成の管理] を選択します。
定義済みの構成のリストから選択できます。
初めて構成を選択すると、Visual Studio によって CMakeSettings.json
ファイルがプロジェクトのルート フォルダー内に作成されます。 このファイルは、たとえばクリーン操作の後などに、CMake キャッシュ ファイルを再作成するために使われます。
その他の構成を追加するには、CMakeSettings.json
を右クリックして [構成の追加] を選択します。
CMake の設定エディターを使用してファイルを編集することもできます。 ソリューション エクスプローラーで CMakeSettings.json
を右クリックして、[CMake 設定の編集] を選択します。 または、エディター ウィンドウの上部にある構成ドロップダウンから [構成の管理] を選択します。
CMakeSettings.json
を直接編集して、カスタム構成を作成することもできます。 次の例では、作業を始めるときに使用できるサンプルの構成を示します。
{
"name": "x86-Debug",
"generator": "Ninja",
"configurationType": "Debug",
"inheritEnvironments": [ "msvc_x86" ],
"buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}",
"installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}",
"cmakeCommandArgs": "",
"buildCommandArgs": "-v",
"ctestCommandArgs": ""
},
JSON の IntelliSense は、CMakeSettings.json
ファイルを編集するときに役立ちます。
"構成" の JSON IntelliSense ポップアップには、buildCommandArgs、buildRoot、cmakeCommandArgs、configurationType などが表示されます。
ファイルの各プロパティについて詳しくは、「CMakeSettings.json
スキーマ リファレンス」をご覧ください。
関連項目
Visual Studio の CMake プロジェクト
Linux CMake プロジェクトを構成する
リモートの Linux コンピューターに接続する
CMake デバッグ セッションを構成する
Linux プロジェクトの配置、実行、デバッグ
CMake 定義済み構成リファレンス