Skip to content

Commit db38283

Browse files
committed
Add CppWinRTGenerateWindowsMetadata property to more quickly determine if a project outputs a winmd.
1 parent 916f926 commit db38283

File tree

11 files changed

+43
-11
lines changed

11 files changed

+43
-11
lines changed

nuget/CppWinrtRules.Project.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,5 +70,10 @@
7070
DisplayName="Optimized"
7171
Description="Enables component projection optimization features (e.g., unified construction)"
7272
Category="General" />
73+
74+
<BoolProperty Name="CppWinRTGenerateWindowsMetadata"
75+
DisplayName="Generate Windows Metadata"
76+
Description="Enables or disabled the generation of Windows Metadata"
77+
Category="General" />
7378

7479
</Rule>

nuget/Microsoft.Windows.CppWinRT.targets

Lines changed: 29 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ Copyright (C) Microsoft Corporation. All rights reserved.
3737
<WindowsSDK_MetadataFoundationPath Condition="('$(WindowsSDK_MetadataFoundationPath)'!='') And !Exists($(WindowsSDK_MetadataFoundationPath))">$(WindowsSDK_MetadataPathVersioned)</WindowsSDK_MetadataFoundationPath>
3838

3939
<GetTargetPathDependsOn>
40-
$(GetTargetPathDependsOn);GetCppWinRTMdMergeInputs;CppWinRTResolveWinMD;
40+
$(GetTargetPathDependsOn);ComputeCppWinRTResolvedWinMD;CppWinRTResolvedWinMD;
4141
</GetTargetPathDependsOn>
4242
<PrepareForBuildDependsOn>
4343
$(PrepareForBuildDependsOn);CppWinRTVerifyKitVersion;
@@ -50,7 +50,12 @@ Copyright (C) Microsoft Corporation. All rights reserved.
5050
$(ComputeMidlInputsTargets);CppWinRTComputeXamlGeneratedMidlInputs;CppWinRTSetMidlReferences;
5151
</ComputeMidlInputsTargets>
5252
<AfterMidlTargets>
53-
$(AfterMidlTargets);GetCppWinRTMdMergeInputs;CppWinRTMergeProjectWinMDInputs;CppWinRTResolveWinMD;
53+
$(AfterMidlTargets);
54+
GetCppWinRTMdMergeInputs;
55+
CppWinRTMergeProjectWinMDInputs;
56+
ComputeCppWinRTResolvedWinMD;
57+
CppWinRTResolvedWinMD;
58+
CppWinRTResolvedWinMDToOutputDirectory;
5459
</AfterMidlTargets>
5560
<ResolveAssemblyReferencesDependsOn>
5661
$(ResolveAssemblyReferencesDependsOn);GetCppWinRTProjectWinMDReferences;CppWinRTRemoveStaticLibraries;
@@ -112,8 +117,17 @@ Copyright (C) Microsoft Corporation. All rights reserved.
112117
</ItemGroup>
113118
</Target>
114119

115-
<Target Name="CppWinRTResolveWinMD"
116-
Condition="'@(CppWinRTMdMergeInputs)' != '' AND '$(CppWinRTEnableComponentProjection)' == 'true'"
120+
<Target Name="ComputeCppWinRTResolvedWinMD"
121+
Condition="'$(CppWinRTGenerateWindowsMetadata)' == ''"
122+
DependsOnTargets="GetCppWinRTMdMergeInputs">
123+
<PropertyGroup>
124+
<CppWinRTGenerateWindowsMetadata Condition="'@(CppWinRTMdMergeInputs)'!= ''">true</CppWinRTGenerateWindowsMetadata>
125+
<CppWinRTGenerateWindowsMetadata Condition="'@(CppWinRTMdMergeInputs)'== ''">false</CppWinRTGenerateWindowsMetadata>
126+
</PropertyGroup>
127+
</Target>
128+
129+
<Target Name="CppWinRTResolvedWinMD"
130+
Condition="'$(CppWinRTGenerateWindowsMetadata)' == 'true'"
117131
Returns="@(WinMDFullPath)">
118132
<ItemGroup>
119133
<WinMDFullPath Remove="@(WinMDFullPath)"/>
@@ -127,7 +141,7 @@ Copyright (C) Microsoft Corporation. All rights reserved.
127141
<ProjectType>$(ConfigurationType)</ProjectType>
128142
</WinMDFullPath>
129143
</ItemGroup>
130-
<Message Text="CppWinRTResolveWinMD: @(WinMDFullPath->'%(FullPath)')" Importance="$(CppWinRTVerbosity)"/>
144+
<Message Text="CppWinRTResolvedWinMD: @(WinMDFullPath->'%(FullPath)')" Importance="$(CppWinRTVerbosity)"/>
131145
</Target>
132146

133147
<!-- Static library reference files are merged into the project that
@@ -372,7 +386,7 @@ $(XamlMetaDataProviderPch)
372386
<Target Name="CppWinRTMergeProjectWinMDInputs"
373387
DependsOnTargets="Midl;GetCppWinRTMdMergeInputs;$(CppWinRTMergeProjectWinMDInputsDependsOn)"
374388
Inputs="@(CppWinRTMdMergeInputs)"
375-
Outputs="$(CppWinRTProjectWinMD)">
389+
Outputs="@(_MdMergedOutput);$(IntDir)mdmerge.rsp">
376390
<PropertyGroup>
377391
<!--Note: CppWinRTNamespaceMergeDepth supersedes CppWinRTMergeDepth-->
378392
<_MdMergeDepth Condition="'$(CppWinRTNamespaceMergeDepth)' != ''">-n:$(CppWinRTNamespaceMergeDepth)</_MdMergeDepth>
@@ -401,11 +415,19 @@ $(XamlMetaDataProviderPch)
401415
<_MdMergedOutput Remove="@(_MdMergedOutput)"/>
402416
<_MdMergedOutput Include="$(CppWinRTMergedDir)*.winmd"/>
403417
</ItemGroup>
418+
<Message Text="CppWinRTMdMerge output: @(MdMergeOutput)" Importance="$(CppWinRTVerbosity)"/>
419+
</Target>
420+
421+
<!-- Only copy winmd to output folder if CppWinRTGenerateWindowsMetadata is true -->
422+
<Target Name="CppWinRTResolvedWinMDToOutputDirectory"
423+
Condition="'$(CppWinRTGenerateWindowsMetadata)' == 'true'"
424+
DependsOnTargets="CppWinRTMergeProjectWinMDInputs;$(CppWinRTResolvedWinMDToOutputDirectoryDependsOn)"
425+
Inputs="@(_MdMergedOutput)"
426+
Outputs="$(CppWinRTProjectWinMD)">
404427
<Copy UseHardlinksIfPossible="$(CppWinRTUseHardlinksIfPossible)"
405428
SkipUnchangedFiles="$(CppWinRTSkipUnchangedFiles)"
406429
SourceFiles="@(_MdMergedOutput)"
407430
DestinationFiles="@(_MdMergedOutput->'$(OutDir)%(Filename)%(Extension)')" />
408-
<Message Text="CppWinRTMdMerge output: @(MdMergeOutput)" Importance="$(CppWinRTVerbosity)"/>
409431
</Target>
410432

411433
<!-- Build the platform projection from the winmds that sip with the platform in the Windows SDK -->

test/nuget/TestRuntimeComponent1/TestRuntimeComponent1.vcxproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@
8787
</ClCompile>
8888
<Link>
8989
<SubSystem>Console</SubSystem>
90-
<GenerateWindowsMetadata>true</GenerateWindowsMetadata>
90+
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
9191
<ModuleDefinitionFile>TestRuntimeComponent1.def</ModuleDefinitionFile>
9292
</Link>
9393
</ItemDefinitionGroup>

test/nuget/TestRuntimeComponent2/TestRuntimeComponent2.vcxproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@
8888
</ClCompile>
8989
<Link>
9090
<SubSystem>Console</SubSystem>
91-
<GenerateWindowsMetadata>true</GenerateWindowsMetadata>
91+
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
9292
<ModuleDefinitionFile>TestRuntimeComponent2.def</ModuleDefinitionFile>
9393
</Link>
9494
</ItemDefinitionGroup>

test/nuget/TestRuntimeComponent3/TestRuntimeComponent3.vcxproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@
8888
</ClCompile>
8989
<Link>
9090
<SubSystem>Console</SubSystem>
91-
<GenerateWindowsMetadata>true</GenerateWindowsMetadata>
91+
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
9292
<ModuleDefinitionFile>TestRuntimeComponent3.def</ModuleDefinitionFile>
9393
</Link>
9494
</ItemDefinitionGroup>

test/nuget/TestRuntimeComponentEmpty/TestRuntimeComponentEmpty.vcxproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@
8888
</ClCompile>
8989
<Link>
9090
<SubSystem>Console</SubSystem>
91-
<GenerateWindowsMetadata>true</GenerateWindowsMetadata>
91+
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
9292
<ModuleDefinitionFile>TestRuntimeComponentEmpty.def</ModuleDefinitionFile>
9393
</Link>
9494
</ItemDefinitionGroup>

vsix/ProjectTemplates/VC/Windows Desktop/ConsoleApplication/ConsoleApplication.vcxproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
<PropertyGroup Label="Globals">
44
<CppWinRTOptimized>true</CppWinRTOptimized>
55
<CppWinRTRootNamespaceAutoMerge>true</CppWinRTRootNamespaceAutoMerge>
6+
<CppWinRTGenerateWindowsMetadata >true</CppWinRTGenerateWindowsMetadata>
67
<MinimalCoreWin>true</MinimalCoreWin>
78
<VCProjectVersion>15.0</VCProjectVersion>
89
<ProjectGuid>{$guid1$}</ProjectGuid>

vsix/ProjectTemplates/VC/Windows Desktop/WindowsApplication/WindowsApplication.vcxproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
<PropertyGroup Label="Globals">
44
<CppWinRTOptimized>true</CppWinRTOptimized>
55
<CppWinRTRootNamespaceAutoMerge>true</CppWinRTRootNamespaceAutoMerge>
6+
<CppWinRTGenerateWindowsMetadata >true</CppWinRTGenerateWindowsMetadata>
67
<MinimalCoreWin>true</MinimalCoreWin>
78
<VCProjectVersion>15.0</VCProjectVersion>
89
<ProjectGuid>{$guid1$}</ProjectGuid>

vsix/ProjectTemplates/VC/Windows Universal/BlankApp/BlankApp.vcxproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
<PropertyGroup Label="Globals">
44
<CppWinRTOptimized>true</CppWinRTOptimized>
55
<CppWinRTRootNamespaceAutoMerge>true</CppWinRTRootNamespaceAutoMerge>
6+
<CppWinRTGenerateWindowsMetadata >true</CppWinRTGenerateWindowsMetadata>
67
<MinimalCoreWin>true</MinimalCoreWin>
78
<ProjectGuid>{$guid1$}</ProjectGuid>
89
<ProjectName>$projectname$</ProjectName>

vsix/ProjectTemplates/VC/Windows Universal/CoreApp/CoreApp.vcxproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
<PropertyGroup Label="Globals">
44
<CppWinRTOptimized>true</CppWinRTOptimized>
55
<CppWinRTRootNamespaceAutoMerge>true</CppWinRTRootNamespaceAutoMerge>
6+
<CppWinRTGenerateWindowsMetadata >true</CppWinRTGenerateWindowsMetadata>
67
<MinimalCoreWin>true</MinimalCoreWin>
78
<ProjectGuid>{$guid1$}</ProjectGuid>
89
<ProjectName>$projectname$</ProjectName>

0 commit comments

Comments
 (0)