Windows10デスクトップ拡張機能をCMakeで自在にインストール: VS_DESKTOP_EXTENSIONS_VERSION徹底解説
"VS_DESKTOP_EXTENSIONS_VERSION" プロパティは、CMake の "Properties: Targets" におけるターゲットプロパティの一つであり、Visual Studio 2015 以降で Windows 10 デスクトップ拡張機能を含むターゲットのバージョンを指定するために使用されます。このプロパティを設定することで、ターゲットに含まれる拡張機能のバージョンを個別に制御することができます。
構文
target_properties(target_name PROPERTIES VS_DESKTOP_EXTENSIONS_VERSION version)
version
: 拡張機能のバージョン番号。例:"10.0.10240.0"target_name
: ターゲットの名前
例
target_properties(my_target PROPERTIES VS_DESKTOP_EXTENSIONS_VERSION 10.0.14393.0)
この例では、my_target
という名前のターゲットにバージョン 10.0.14393.0 の Windows 10 デスクトップ拡張機能を含めるように設定します。
- CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION 変数を使用して、使用している Windows 10 SDK と同じバージョンの拡張機能を使用することができます。
- 複数の拡張機能を含む場合は、";" で区切ってバージョン番号を指定することができます。
- このプロパティを設定しないと、Windows 10 デスクトップ拡張機能はターゲットに含まれません。
- "VS_DESKTOP_EXTENSIONS_VERSION" プロパティは、CMake 3.4 以降で使用可能になります。
例 1: 単一の拡張機能
cmake_minimum_required(VERSION 3.4)
project(my_project)
set(CMAKE_TARGET_ARCHITECTURES x64)
add_executable(my_app my_app.cpp)
target_properties(my_app PROPERTIES VS_DESKTOP_EXTENSIONS_VERSION 10.0.14393.0)
例 2: 複数の拡張機能
cmake_minimum_required(VERSION 3.4)
project(my_project)
set(CMAKE_TARGET_ARCHITECTURES x64)
add_executable(my_app my_app.cpp)
target_properties(my_app PROPERTIES VS_DESKTOP_EXTENSIONS_VERSION 10.0.14393.0;10.0.17763.0)
この例では、my_app
という名前のターゲットにバージョン 10.0.14393.0 と 10.0.17763.0 の Windows 10 デスクトップ拡張機能を含めるように設定します。
例 3: CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION 変数を使用する
cmake_minimum_required(VERSION 3.4)
project(my_project)
set(CMAKE_TARGET_ARCHITECTURES x64)
set(CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION 10.0.17763.0)
add_executable(my_app my_app.cpp)
この例では、CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION
変数を使用して、使用している Windows 10 SDK と同じバージョンの拡張機能を使用するように設定します。
- これらの例は、Visual Studio 2015 以降で Windows 10 デスクトップ拡張機能を含むターゲットをビルドする場合にのみ使用できます。
代替方法
"VS_DESKTOP_EXTENSIONS_VERSION" プロパティの代替方法として、以下の方法が考えられます。
手動で拡張機能をインストールする
CMake を使用せずに、手動で拡張機能をインストールすることができます。これは、比較的単純な方法ですが、拡張機能を個別に管理する必要があるという欠点があります。
手順
- 拡張機能の .cab ファイルをダウンロードします。
- 拡張機能の .cab ファイルをターゲットディレクトリにコピーします。
- 拡張機能の .cab ファイルをレジストリに登録します。
例
# 拡張機能の .cab ファイルをダウンロード
Download-File https://example.com/my-extension.cab -Destination C:\Temp\my-extension.cab
# 拡張機能の .cab ファイルをターゲットディレクトリにコピー
Copy-Item C:\Temp\my-extension.cab C:\Program Files (x86)\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\bin\Extensibility\WindowsDesktop
# 拡張機能の .cab ファイルをレジストリに登録
reg add HKLM\SOFTWARE\Microsoft\VisualStudio\16.0\Extensions\WindowsDesktop /v MyExtension /t REG_SZ /d C:\Program Files (x86)\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\bin\Extensibility\WindowsDesktop\my-extension.cab
"CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION" 変数を使用する
"CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION" 変数を使用して、使用している Windows 10 SDK と同じバージョンの拡張機能を使用することができます。これは、"VS_DESKTOP_EXTENSIONS_VERSION" プロパティよりも柔軟な方法ですが、拡張機能のバージョンを個別に制御することはできません。
手順
- "CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION" 変数を設定します。
- ターゲットをビルドします。
例
cmake_minimum_required(VERSION 3.4)
project(my_project)
set(CMAKE_TARGET_ARCHITECTURES x64)
set(CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION 10.0.17763.0)
add_executable(my_app my_app.cpp)
"vcpkg" を使用する
"vcpkg" は、Windows 開発環境用のパッケージマネージャーです。vcpkg を使用して、Windows 10 デスクトップ拡張機能をインストールすることができます。これは、拡張機能を簡単にインストールできる方法ですが、vcpkg をインストールして設定する必要があるという欠点があります。
手順
- vcpkg をインストールします。
- vcpkg を使用して拡張機能をインストールします。
- ターゲットをビルドします。
例
# vcpkg をインストール
git clone https://github.com/microsoft/vcpkg.git C:\vcpkg
set PATH=C:\vcpkg\bin;%PATH%
# 拡張機能をインストール
vcpkg install windows-desktop-extensions
# ターゲットをビルド
cmake --build .
"NuGet" を使用する
"NuGet" は、.NET 開発環境用のパッケージマネージャーです。NuGet を使用して、Windows 10 デスクトップ拡張機能をインストールすることができます。これは、.NET 開発者にとって便利な方法ですが、NuGet をインストールして設定する必要があるという欠点があります。
手順
- NuGet をインストールします。
- NuGet を使用して拡張機能をインストールします。
- ターゲットをビルドします。
例
# NuGet をインストール
Install-Package Manager -Name NuGet -AllowPrerelease -Force
# 拡張機能をインストール
Install-Package WindowsDesktopExtensions
# ターゲットをビルド
dotnet build
最適な方法の選択
"VS_DESKTOP_EXTENSIONS_VERSION" プロパティの代替方法は、状況によって異なります。
- 拡張機能の
- 拡張機能を個別に管理する必要がある場合は、手動で拡張機能をインストールする方法が適しています。