Я пытаюсь перевести проект KMDF VS2017 на cmake, я посмотрел файл vcxproj и добавил следующее в cmakelists.txt, чтобы попытаться скопировать его:
set_target_properties(${KmdTarget} PROPERTIES VS_GLOBAL_WDKVersion ${WdkVersion})
set_target_properties(${KmdTarget} PROPERTIES VS_GLOBAL_WDK_ROOT ${WDKContentRoot})
set_target_properties(${KmdTarget} PROPERTIES VS_GLOBAL_PlatformToolset "WindowsKernelModeDriver10.0")
set_target_properties(${KmdTarget} PROPERTIES ConfigurationType "Driver")
set_target_properties(${KmdTarget} PROPERTIES VS_GLOBAL_DriverType "KMDF")
set_target_properties(${KmdTarget} PROPERTIES VS_GLOBAL_DriverTargetPlatform Universal)
set_target_properties(${KmdTarget} PROPERTIES VS_GLOBAL_KMDF_VERSION_MAJOR 1)
set_target_properties(${KmdTarget} PROPERTIES VS_GLOBAL_KMDF_VERSION_MINOR 19)
set_target_properties(${KmdTarget} PROPERTIES VS_GLOBAL__NT_TARGET_VERSION 0xA000002)
НО это приводит к следующему в cmake сгенерированному vcxproj:
<PropertyGroup Label="Globals">
<ProjectGuid>{A6336750-908F-33D3-937B-23E24AB3DF11}</ProjectGuid>
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
<Keyword>Win32Proj</Keyword>
<Platform>x64</Platform>
<ProjectName>TestKmd</ProjectName>
<VCProjectUpgraderObjectName>NoUpgrade</VCProjectUpgraderObjectName>
<DriverTargetPlatform>Universal</DriverTargetPlatform>
<ConfigurationType>Driver</ConfigurationType>
<DriverType>KMDF</DriverType>
<KMDF_VERSION_MAJOR>1</KMDF_VERSION_MAJOR>
<KMDF_VERSION_MINOR>19</KMDF_VERSION_MINOR>
<PlatformToolset>WindowsKernelModeDriver10.0</PlatformToolset>
<WDKVersion>10.0.18307.0</WDKVersion>
<_NT_TARGET_VERSION>0xA000002</_NT_TARGET_VERSION>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v141</PlatformToolset>
</PropertyGroup>
Как видите, ConfigurationType перезаписывается, когда я выбираю Release / Debug config.
Можно ли использовать set_target_properties (TARGET PROPERTIES VS_GLOBAL_variable) для добавления переменной в PropertyGroup Label = "Конфигурация" вместо PropertyGroup Label = "Global"