Visual Studio 開発を CMake でさらに便利に: プラットフォーム設定のベストプラクティス


"CMAKE_VS_PLATFORM_NAME_DEFAULT" は、CMake で生成される Visual Studio プロジェクトファイルにおけるデフォルトのプラットフォーム名を定義する変数です。これは、Visual Studio ターゲット プラットフォームの名前を決定するために使用されます。

詳細

"CMAKE_VS_PLATFORM_NAME_DEFAULT" は、CMake 3.14 以降で導入されました。この変数は、CMAKE_GENERATOR_PLATFORM 変数が設定されていない場合にのみ使用されます。CMAKE_GENERATOR_PLATFORM 変数は、CMake プロジェクトを生成する際に明示的に設定することができます。

以下の例は、"CMAKE_VS_PLATFORM_NAME_DEFAULT" 変数を設定する方法を示しています。

set(CMAKE_VS_PLATFORM_NAME_DEFAULT "x64")

この例では、"x64" が Visual Studio プロジェクトファイルにおけるデフォルトのプラットフォーム名として設定されます。

  • "CMAKE_VS_PLATFORM_NAME_DEFAULT" 変数の値は、Visual Studio のプラットフォーム名と一致する必要があります。詳細については、Visual Studio のドキュメントを参照してください。
  • "CMAKE_VS_PLATFORM_NAME_DEFAULT" 変数は、ツールチェーン ファイルで使用されることが多いです。ツールチェーン ファイルは、CMake プロジェクトを生成するために必要な設定を定義します。


cmake_minimum_required(VERSION 3.14)

set(CMAKE_VS_PLATFORM_NAME_DEFAULT "x64")

project(MyProject)

add_executable(MyTarget MySource.cpp)

この例では、CMAKE_VS_PLATFORM_NAME_DEFAULT 変数が "x64" に設定されています。そのため、Visual Studio で MyProject プロジェクトを開くと、デフォルトのプラットフォームは "x64" になります。

例 2: ツールチェーン ファイルで "CMAKE_VS_PLATFORM_NAME_DEFAULT" を設定する

cmake_minimum_required(VERSION 3.14)

set(CMAKE_TOOLCHAIN_FILE "MyToolchain.cmake")

project(MyProject)

add_executable(MyTarget MySource.cpp)

MyToolchain.cmake ファイルの内容は以下のようになります。

set(CMAKE_VS_PLATFORM_NAME_DEFAULT "Win32")

この例では、MyToolchain.cmake ファイルで CMAKE_VS_PLATFORM_NAME_DEFAULT 変数が "Win32" に設定されています。そのため、Visual Studio で MyProject プロジェクトを開くと、デフォルトのプラットフォームは "Win32" になります。

例 3: CMAKE_GENERATOR_PLATFORM 変数を使用してプラットフォームを明示的に設定する

cmake_minimum_required(VERSION 3.14)

set(CMAKE_GENERATOR_PLATFORM "Win64")

project(MyProject)

add_executable(MyTarget MySource.cpp)

この例では、CMAKE_GENERATOR_PLATFORM 変数が "Win64" に設定されています。そのため、Visual Studio で MyProject プロジェクトを開くと、プラットフォームは "Win64" に設定されます。

  • 詳細については、CMake のドキュメントを参照してください。
  • CMAKE_VS_PLATFORM_NAME_DEFAULT 変数は、Visual Studio 2015 以降でのみ使用できます。


CMAKE_GENERATOR_PLATFORM 変数を使用する

CMAKE_GENERATOR_PLATFORM 変数は、CMake プロジェクトを生成する際に明示的に設定することができます。この変数は、"CMAKE_VS_PLATFORM_NAME_DEFAULT" 変数よりも優先的に使用されます。

cmake_minimum_required(VERSION 3.14)

set(CMAKE_GENERATOR_PLATFORM "Win64")

project(MyProject)

add_executable(MyTarget MySource.cpp)

ツールチェーン ファイルでプラットフォームを設定する

ツールチェーン ファイルは、CMake プロジェクトを生成するために必要な設定を定義します。ツールチェーン ファイル内で、以下の変数を設定することができます。

  • CMAKE_VS_PLATFORM_TOOLSET: ターゲット ツールセット (例: "v142")
  • CMAKE_VS_PLATFORM_MACHINE: ターゲット マシン (例: "x86", "AMD64")
  • CMAKE_VS_PLATFORM_ARCH: ターゲット アーキテクチャ (例: "x64", "Win32")

これらの変数を設定することで、Visual Studio プロジェクトファイルにおけるプラットフォーム名を定義することができます。

set(CMAKE_VS_PLATFORM_ARCH "x64")
set(CMAKE_VS_PLATFORM_MACHINE "x86")
set(CMAKE_VS_PLATFORM_TOOLSET "v142")

プロジェクト ファイルでプラットフォームを設定する

プロジェクト ファイル内で、以下のプロパティを設定することができます。

  • WIN32_SHARED_LIBRARY_TARGET_TYPE: Windows 共有ライブラリ ターゲット タイプ (例: "Dll", "LibWindows")
  • WIN32_STATIC_LIBRARY_TARGET_TYPE: Windows 静的ライブラリ ターゲット タイプ (例: "StaticLib", "LibWindows")
  • WIN32_EXECUTABLE_TARGET_TYPE: Windows 実行可能ファイルのターゲット タイプ (例: "WindowsApplication", "ExeWindows")
set_property(TARGET MyTarget PROPERTY WIN32_EXECUTABLE_TARGET_TYPE "ExeWindows")