-
Notifications
You must be signed in to change notification settings - Fork 4
/
Directory.Build.props
173 lines (146 loc) · 10.1 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
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
<?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>
<OutDir Condition="'$(Platform)'=='Win32'">$(MSBuildThisFileDirectory)build\bin\x86\$(Configuration)\</OutDir>
<!-- C++ temp files can be redirected. -->
<IntDir>$(MSBuildThisFileDirectory)build\intermediate\$(MSBuildProjectName)\$(Platform)\$(Configuration)\</IntDir>
<IntDir Condition="'$(Platform)'=='Win32'">$(MSBuildThisFileDirectory)build\intermediate\$(MSBuildProjectName)\x86\$(Configuration)\</IntDir>
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
<!-- Default character set is Unicode (UTF16), defines _UNICODE and UNICODE. -->
<CharacterSet>Unicode</CharacterSet>
<CodeAnalysisRuleSet>$(MSBuildThisFileDirectory)default.ruleset</CodeAnalysisRuleSet>
<!-- Assist VC package manager which configuration to use (checked is debug+static checking) -->
<VcpkgConfiguration Condition="'$(Configuration)' == 'Checked'">Debug</VcpkgConfiguration>
<!-- WinRT is needed for the COM support, disable generation of Windows Metadata (is slow) -->
<CppWinRTGenerateWindowsMetadata>false</CppWinRTGenerateWindowsMetadata>
</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 C++20 standard -->
<LanguageStandard>stdcpp20</LanguageStandard>
<UseStandardPreprocessor>true</UseStandardPreprocessor> <!-- Needed as stdcpp20 doesn't enable it by default. -->
<!-- To ensure high quality C++ code use Warning level 4 and treat warnings as errors to ensure warnings are fixed promptly. -->
<WarningLevel>Level4</WarningLevel>
<TreatWarningAsError>true</TreatWarningAsError>
<UseFullPaths>true</UseFullPaths>
<!-- Explicit set the 'external' warning level to off (Supported since Visual Studio 2019 16.10) -->
<ExternalWarningLevel>TurnOffAllWarnings</ExternalWarningLevel>
<DisableAnalyzeExternal>true</DisableAnalyzeExternal>
<!-- For development purposes, All warnings can be used to discover useful compiler warnings.
This requires also that some warnings need to be disabled from this all warning list. -->
<WarningLevel Condition="'$(JPEGLS_WIC_CODEC_ALL_WARNINGS)'!=''">EnableAllWarnings</WarningLevel>
<!--
Disable level All warnings that are not useful:
C4061 = enumerator 'identifier' in switch of enum 'enumeration' is not explicitly handled by a case label
C4265 = class has virtual functions, but its non-trivial destructor is not virtual; instances of this class may not be destructed correctly
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. [Just informational]
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 [Just informational]
C4625 = derived class' : copy constructor was implicitly defined as deleted because a base class copy constructor is inaccessible or deleted [Just informational]
C4626 = derived class' : assignment operator was implicitly defined as deleted because a base class assignment operator is inaccessible or deleted [Just informational]
C4668 = symbol' is not defined as a preprocessor macro, replacing with '0' for 'directives' [Just informational]
C4686 = 'std::_Decode_utf': possible change in behavior, change in UDT return calling convention [problem in format in Visual Studio 2022 17.8.0]
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]
C4774 = ‘<function>’ : format string expected in argument <position> is not a string literal [Just informational]
C4820 = bytes' bytes padding added after construct 'member_name' [Just informational]
C4946 = reinterpret_cast used between related classes: '' and ''
C5026 = 'type': move constructor was implicitly defined as deleted [Just informational]
C5027 = 'type': move assignment operator was implicitly defined as deleted [Just informational]
C5039 = 'function': pointer or reference to potentially throwing function passed to extern C function under -EHc. [Just informational]
C5045 = Compiler will insert Spectre mitigation for memory load if /Qspectre switch specified [Just informational]
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 [prevents simple usage of std::byte]
-->
<DisableSpecificWarnings Condition="'$(JPEGLS_WIC_CODEC_ALL_WARNINGS)'!=''">4005;4061;4265;4365;4464;4514;4571;4623;4625;4626;4668;4686;4710;4711;4738;4774;4820;4946;5026;5027;5039;5045;5204;5246</DisableSpecificWarnings>
<!--
C4005 = macro redefinition [Caused by the use of header units]
C4744 = '' has different type [caused by using named module]
-->
<DisableSpecificWarnings>4005;4744;%(DisableSpecificWarnings)</DisableSpecificWarnings>
<!--
__cplusplus = Tell MSVC to 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>
<!--
* Windows SDK *
WIN32_LEAN_AND_MEAN: Exclude includes from Windows.h that are seldom used.
NOSERVICE: Exclude includes from Windows.h for Windows services (not used).
NOMCX: Exclude includes for Modem Configuration Extensions from Windows.h (not used).
NOIME: Exclude includes for Input Method Manager definitions from Windows.h (not used).
NOMINMAX: Prevent that the Windows SDK header files define the macros min and max (conflict with C++ std::min\max).
* WINRT *
WINRT_LEAN_AND_MEAN: If defined, disables rarely-used WinRT features (in order to reduce compile times)
* C *
__STDC_WANT_SECURE_LIB__=1: Enable the secure methods of the C standard library.
-->
<PreprocessorDefinitions>
WIN32_LEAN_AND_MEAN;NOSERVICE;NOMCX;NOIME;NOMINMAX;WINRT_LEAN_AND_MEAN;__STDC_WANT_SECURE_LIB__=1;%(PreprocessorDefinitions)
</PreprocessorDefinitions>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<TreatLinkerWarningAsErrors>true</TreatLinkerWarningAsErrors>
<MinimumRequiredVersion>10</MinimumRequiredVersion>
</Link>
</ItemDefinitionGroup>
<PropertyGroup Condition="'$(Configuration)'=='Debug'">
<UseDebugLibraries>true</UseDebugLibraries>
<LinkIncremental>true</LinkIncremental>
<LinkIncremental Condition="'$(JPEGLS_WIC_CODEC_PROFILE)'!=''">false</LinkIncremental>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)'=='Debug'">
<ClCompile>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<DebugInformationFormat Condition="'$(JPEGLS_WIC_CODEC_PROFILE)'!=''">ProgramDatabase</DebugInformationFormat>
</ClCompile>
<!-- Switch to full debug info when the environment variable VS_DEBUG_FULL_INFO is defined and not empty
In debug builds, "fast" info is the default but the VS code coverage tool requires full info. -->
<Link Condition="'$(VS_DEBUG_FULL_INFO)'!=''">
<GenerateDebugInformation>DebugFull</GenerateDebugInformation>
<Profile Condition="'$(JPEGLS_WIC_CODEC_PROFILE)'!=''">true</Profile>
</Link>
<Link Condition="'$(JPEGLS_WIC_CODEC_PROFILE)'!=''">
<GenerateDebugInformation>DebugFull</GenerateDebugInformation>
<Profile>true</Profile>
</Link>
<ResourceCompile>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
</ItemDefinitionGroup>
<PropertyGroup Condition="'$(Configuration)'=='Release'">
<UseDebugLibraries>false</UseDebugLibraries>
<LinkIncremental>false</LinkIncremental>
<WholeProgramOptimization>true</WholeProgramOptimization>
<RunCodeAnalysis>true</RunCodeAnalysis>
<EnableCppCoreCheck>true</EnableCppCoreCheck>
<EnableMicrosoftCodeAnalysis>true</EnableMicrosoftCodeAnalysis>
<EnableClangTidyCodeAnalysis>false</EnableClangTidyCodeAnalysis>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)'=='Release'">
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<EnablePREfast>true</EnablePREfast> <!-- For release builds, enable the MS static analyzer build into the C++ compiler. -->
</ClCompile>
<Link>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<LinkIncremental>false</LinkIncremental>
<!-- Store only the filename of the PDB file into the .exe/.dll for deterministic builds. -->
<AdditionalOptions>/PDBALTPATH:%_PDB% %(AdditionalOptions)</AdditionalOptions>
</Link>
</ItemDefinitionGroup>
</Project>