-
Notifications
You must be signed in to change notification settings - Fork 3
/
Directory.Build.props
144 lines (124 loc) · 8.79 KB
/
Directory.Build.props
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<!-- Build to a folder outside the source folders, making it easier to clean. -->
<OutDir>$(MSBuildThisFileDirectory)build\bin\$(Platform)\$(Configuration)\</OutDir>
<IntDir>$(MSBuildThisFileDirectory)build\intermediate\$(Platform)\$(Configuration)\$(MSBuildProjectName)\</IntDir>
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
<!-- Default character set is Unicode (UTF16), defines _UNICODE and UNICODE. -->
<CharacterSet>Unicode</CharacterSet>
<CodeAnalysisRuleSet>$(MSBuildThisFileDirectory)default.ruleset</CodeAnalysisRuleSet>
<CAExcludePath>$(IntDir);$(MSBuildThisFileDirectory)wtl\include</CAExcludePath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)'=='Debug'">
<UseDebugLibraries>true</UseDebugLibraries>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)'=='Release'">
<UseDebugLibraries>false</UseDebugLibraries>
<RunCodeAnalysis>true</RunCodeAnalysis>
<WholeProgramOptimization>true</WholeProgramOptimization>
</PropertyGroup>
<ItemDefinitionGroup>
<ClCompile>
<!-- Use all cores to speed up the compilation (MS recommended best practice). -->
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<!-- Explicit define that all projects are compiled according the latest (currently C++20) standard -->
<LanguageStandard>stdcpp20</LanguageStandard>
<UseStandardPreprocessor>true</UseStandardPreprocessor>
<!-- To ensure high quality C++ code use Warning level All and treat warnings as errors to ensure warnings are fixed promptly. -->
<WarningLevel>EnableAllWarnings</WarningLevel>
<TreatWarningAsError>true</TreatWarningAsError>
<!-- Explicit set the 'external' warning level to disabled (Supported since Visual Studio 2019 16.10) -->
<ExternalWarningLevel>TurnOffAllWarnings</ExternalWarningLevel>
<TreatAngleIncludeAsExternal>true</TreatAngleIncludeAsExternal>
<!--
Disable level All warnings that are not useful:
C4005 = macro redefinition
C4061 = enumerator 'identifier' in switch of enum 'enumeration' is not explicitly handled by a case label
C4191 = operator/operation' : unsafe conversion from 'type of expression' to 'type required'
C4193 = #pragma warning(pop): no matching '#pragma warning(push)'
C4200 = nonstandard extension used: zero-sized array in struct/union
C4263 = function' : member function does not override any base class virtual member function
C4264 = virtual_function' : no override available for virtual member function from base 'class'; function is hidden
C4265 = class' : class has virtual functions, but destructor is not virtual
C4266 = function' : no override available for virtual member function from base 'type'; function is hidden
C4365 = action' : conversion from 'type_1' to 'type_2', signed/unsigned mismatch
C4464 = A #include directive has a path that includes a '..' parent directory specifier.
C4514 = function' : unreferenced inline function has been removed [Just informational]
C4571 = Informational: catch(...) semantics changed since Visual C++ 7.1; structured exceptions (SEH) are no longer caught [Just informational]
C4623 = derived class`' : default constructor was implicitly defined as deleted because a base class default constructor is inaccessible or deleted
C4625 = derived class' : copy constructor was implicitly defined as deleted because a base class copy constructor is inaccessible or deleted
C4626 = derived class' : assignment operator was implicitly defined as deleted because a base class assignment operator is inaccessible or deleted
C4668 = symbol' is not defined as a preprocessor macro, replacing with '0' for 'directives'
C4710 = function '' function not inlined [Just informational]
C4711 = function '' selected for automatic inline expansion [Just informational]
C4738 = storing 32-bit float result in memory, possible loss of performance [Just informational]
C4755 = Conversion rules for arithmetic operations in the comparison
C4774 = ‘<function>’ : format string expected in argument <position> is not a string literal
C4820 = bytes' bytes padding added after construct 'member_name' [Just informational]
C5026 = 'type': move constructor was implicitly defined as deleted
C5027 = 'type': move assignment operator was implicitly defined as deleted
C5039 = 'function': pointer or reference to potentially throwing function passed to extern C function under -EHc.
C5042 = 'declaration': function declarations at block scope cannot be specified 'inline' in standard C++; remove 'inline' specifier
C5045 = Compiler will insert Spectre mitigation for memory load if /Qspectre switch specified
C5106 = macro redefined with different parameter names
C5204 = 'class has virtual functions, but its trivial destructor is not virtual; instances of objects derived from this class may not be destructed correctly
C5246 = the initialization of a subobject should be wrapped in braces [Causes IntelliSense to fail]
-->
<DisableSpecificWarnings>4686;4005;4061;4191;4193;4200;4263;4264;4265;4266;4365;4464;4505;4514;4571;4623;4625;4626;4668;4710;4711;4738;4774;4755;4820;5026;5027;5039;5042;5045;5106;5204;5246</DisableSpecificWarnings>
<!--
__cplusplus = Use the correct value for the __cplusplus macro
throwingNew = Communicate with the compiler that only the throwing variant of operator new is used.
utf-8 = interpret all source files as UTF-8.
-->
<AdditionalOptions>/Zc:__cplusplus /Zc:throwingNew /utf-8 %(AdditionalOptions)</AdditionalOptions>
<!--
WIN32_LEAN_AND_MEAN = Exclude APIs such as Cryptography, DDE, RPC, Shell, and Windows Sockets.
NOMINMAX = Prevent that the Windows SDK header files define the macros min and max.
_ATL_ALL_WARNINGS = Prevents that ATL disables warnings in our code.
_ATL_ENABLE_PTM_WARNING = force the use of ANSI C++ standard-conforming syntax for pointer to member functions.
_ATL_MODULES = Allows to compile ATL projects with permissive- and use ATL with C++ modules.
_ATL_NO_AUTOMATIC_NAMESPACE = Prevents the default use of namespace as ATL.
_ATL_CSTRING_EXPLICIT_CONSTRUCTORS = Makes certain CString constructors explicit, preventing any unintentional conversions
_CA_SHOULD_CHECK_RETURN = Expand PreFast attribute _Check_return_opt_ into _Check_return_
_CA_SHOULD_CHECK_RETURN_WER = Expand PreFast attribute _Check_return_wat_ into _Check_return_
__STDC_WANT_SECURE_LIB__=1 = Enable the secure CRT functions by default.
-->
<PreprocessorDefinitions>
WIN32;_WINDOWS;WIN32_LEAN_AND_MEAN;NOMINMAX;_ATL_ALL_WARNINGS;_ATL_ENABLE_PTM_WARNING;_ATL_NO_AUTOMATIC_NAMESPACE;_ATL_MODULES;
_ATL_CSTRING_EXPLICIT_CONSTRUCTORS;_CA_SHOULD_CHECK_RETURN;_CA_SHOULD_CHECK_RETURN_WER;__STDC_WANT_SECURE_LIB__=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<!-- Mark the application compatible with Control-flow Enforcement Technology (CET) Shadow Stack (for x86 and x64)-->
<CETCompat Condition="'$(Platform)'!='ARM64'">true</CETCompat>
<AdditionalIncludeDirectories>$(MSBuildThisFileDirectory)generate-header-units;$(MSBuildThisFileDirectory)wtl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
</Link>
<ResourceCompile>
<AdditionalIncludeDirectories>$(MSBuildThisFileDirectory)wtl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ResourceCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)'=='Debug'">
<ClCompile>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)'=='Release'">
<ClCompile>
<!-- For release builds, enable the MS static analyzer build into the C++ compiler. -->
<EnablePREfast>true</EnablePREfast>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
</Link>
</ItemDefinitionGroup>
</Project>