Visual Studio SDKのソースコードを直接参照!CMakeにおける変数`CMAKE_VS_SDK_SOURCE_DIRECTORIES`の役割とは?


CMAKE_VS_SDK_SOURCE_DIRECTORIES は、Visual Studio SDK のソースディレクトリを指定するために使用される CMake 変数です。この変数は CMake 3.12 以降で導入されました。

用途

設定方法

CMAKE_VS_SDK_SOURCE_DIRECTORIES 変数は、CMakeLists.txt ファイル内で以下の様に設定できます。

set(CMAKE_VS_SDK_SOURCE_DIRECTORIES "<SDK_SOURCE_DIR1>;<SDK_SOURCE_DIR2>;...")

ここで、<SDK_SOURCE_DIR1>, <SDK_SOURCE_DIR2> は、Visual Studio SDK のソースディレクトリへのパスをセミコロンで区切って指定します。

以下は、CMAKE_VS_SDK_SOURCE_DIRECTORIES 変数を使用して Visual Studio 2019 SDK のソースディレクトリを指定する例です。

set(CMAKE_VS_SDK_SOURCE_DIRECTORIES "C:/Program Files (x86)/Microsoft Visual Studio/2019/Professional/VC/Auxiliary/Build;C:/Program Files (x86)/Microsoft Visual Studio/2019/BuildTools/VC")

注意事項

  • この変数は、CMake が Visual Studio SDK のソースコードを直接参照するため、SDK のソースコードが変更された場合は、CMakeLists.txt ファイルを再編集する必要があります。
  • CMAKE_VS_SDK_SOURCE_DIRECTORIES 変数は、Visual Studio 以外のコンパイラを使用している場合は設定する必要はありません。

CMAKE_VS_SDK_SOURCE_DIRECTORIES 変数は、Visual Studio SDK のソースコードを直接参照するため、以下の点に注意する必要があります。

  • SDK のソースコードは、ライセンス条項に従って使用してください。
  • SDK のソースコードが破損している場合は、ビルドが失敗する可能性があります。
  • SDK のソースコードが変更された場合は、CMakeLists.txt ファイルを再編集する必要があります。


cmake_minimum_required(VERSION 3.13)

project(MyProject)

set(CMAKE_TOOLCHAIN_FILE "${CMAKE_SOURCE_DIR}/build/toolchain.cmake")

set(CMAKE_VS_SDK_SOURCE_DIRECTORIES "C:/Program Files (x86)/Microsoft Visual Studio/2019/Professional/VC/Auxiliary/Build;C:/Program Files (x86)/Microsoft Visual Studio/2019/BuildTools/VC")

set(SOURCE_FILES main.cpp)
add_executable(MyProject ${SOURCE_FILES})

例2:Visual Studio 2017 SDK を使用して Visual Studio 2017 で C++ ライブラリをビルド

cmake_minimum_required(VERSION 3.13)

project(MyLibrary)

set(CMAKE_TOOLCHAIN_FILE "${CMAKE_SOURCE_DIR}/build/toolchain.cmake")

set(CMAKE_VS_SDK_SOURCE_DIRECTORIES "C:/Program Files (x86)/Microsoft Visual Studio/2017/Professional/VC/Auxiliary/Build;C:/Program Files (x86)/Microsoft Visual Studio/2017/BuildTools/VC")

set(SOURCE_FILES MyLibrary.cpp)
add_library(MyLibrary STATIC ${SOURCE_FILES})

例3:Visual Studio 2015 SDK を使用して Visual Studio 2015 で C# アプリケーションをビルド

cmake_minimum_required(VERSION 3.13)

project(MyApplication)

set(CMAKE_TOOLCHAIN_FILE "${CMAKE_SOURCE_DIR}/build/toolchain.cmake")

set(CMAKE_VS_SDK_SOURCE_DIRECTORIES "C:/Program Files (x86)/Microsoft Visual Studio/2015/Professional/VC/Auxiliary/Build;C:/Program Files (x86)/Microsoft Visual Studio/2015/BuildTools/VC")

set(SOURCE_FILES main.cs)
add_executable(MyApplication ${SOURCE_FILES})

説明

上記の例は、CMAKE_VS_SDK_SOURCE_DIRECTORIES 変数を使用して Visual Studio SDK のソースディレクトリを指定し、Visual Studio 2019、2017、2015 で C++ アプリケーション、C++ ライブラリ、C# アプリケーションをビルドする方法を示しています。

ビルド方法

上記の例をビルドするには、以下のコマンドを実行します。

mkdir build
cd build
cmake ..
cmake --build .


CMAKE_VS_SDK_DIR 変数

CMAKE_VS_SDK_DIR 変数は、Visual Studio SDK のインストールディレクトリを指定するために使用されます。CMake は、このディレクトリ内の Build サブディレクトリを使用して、SDK のソースコードを検索します。

set(CMAKE_VS_SDK_DIR "<SDK_INSTALL_DIR>")

set(CMAKE_VS_SDK_DIR "C:/Program Files (x86)/Microsoft Visual Studio/2019/Professional")

環境変数 VSINSTALLDIR

VSINSTALLDIR 環境変数は、Visual Studio のインストールディレクトリを指定するために使用されます。CMake は、この環境変数を使用して、SDK のソースコードを検索することもできます。

set(CMAKE_VS_SDK_DIR "${VSINSTALLDIR}")

find_package() モジュール

find_package() モジュールを使用して、Visual Studio SDK を検索することもできます。このモジュールは、SDK のインストールディレクトリ、ソースディレクトリ、ヘッダーファイル、ライブラリファイルなどの情報を取得することができます。

find_package(VS2019 REQUIRED)

find_package(VS2017 REQUIRED)

手動でヘッダーファイルとライブラリファイルを指定

Visual Studio SDK のヘッダーファイルとライブラリファイルを直接指定することもできます。

include_directories("C:/Program Files (x86)/Microsoft Visual Studio/2019/Professional/VC/Auxiliary/Build/Include")
link_libraries("C:/Program Files (x86)/Microsoft Visual Studio/2019/Professional/VC/Auxiliary/Build/Microsoft.Cpp.Platform.targets")

include_directories("C:/Program Files (x86)/Microsoft Visual Studio/2017/Professional/VC/Auxiliary/Build/Include")
link_libraries("C:/Program Files (x86)/Microsoft Visual Studio/2017/Professional/VC/Auxiliary/Build/Microsoft.Cpp.Platform.targets")

それぞれの方法の比較

方法利点欠点
CMAKE_VS_SDK_SOURCE_DIRECTORIES最も簡単SDK のソースコードが変更された場合、CMakeLists.txt ファイルを再編集する必要がある
CMAKE_VS_SDK_DIR簡単SDK のインストールディレクトリを変更する必要がある
find_package() モジュール最も柔軟性が高いモジュールのインストールと設定が必要
手動でヘッダーファイルとライブラリファイルを指定最も詳細な制御が可能最も複雑

どの方法を使用するかは、プロジェクトの要件と開発者の好みによって異なります。

  • 最も詳細な制御が必要な場合は、ヘッダーファイルとライブラリファイルを直接指定することをお勧めします。
  • より柔軟性が必要な場合は、find_package() モジュールを使用することをお勧めします。
  • SDK のインストールディレクトリを変更する必要がある場合は、CMAKE_VS_SDK_DIR 変数を使用することをお勧めします。
  • 簡単でシンプルな方法が必要な場合は、CMAKE_VS_SDK_SOURCE_DIRECTORIES 変数を使用することをお勧めします。