-
Notifications
You must be signed in to change notification settings - Fork 1
/
Directory.Build.props
114 lines (95 loc) · 6.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
<?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>
<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>
<!-- Vcpkg only understands Debug and Release configurations, map Checked to Debug to prevent warnings. -->
<VcpkgConfiguration Condition="'$(Configuration)' == 'Checked'">Debug</VcpkgConfiguration>
</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 -->
<!-- Note: use stdcpplatest until MSVC supports stdcpp20 and std::format (expected time frame Visual Studio 2022) -->
<LanguageStandard>stdcpplatest</LanguageStandard>
<!-- 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 disabled (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="'$(CHARLS_IMAGE_TEST_ALL_WARNINGS)'!=''">EnableAllWarnings</WarningLevel>
<!--
Disable level All warnings that are not useful:
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]
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]
C4820 = bytes' bytes padding added after construct 'member_name' [Just informational]
C4866 = compiler may not enforce left-to-right evaluation order [Just informational]
C4868 = compiler may not enforce left-to-right evaluation order in braced initializer list [Just informational]
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]
C5264 = '': 'const' variable is not used [Just informational]
-->
<DisableSpecificWarnings Condition="'$(CHARLS_IMAGE_TEST_ALL_WARNINGS)'!=''">4514;4571;4623;4625;4626;4702;4710;4711;4738;4820;4866;4868;5026;5027;5039;5045;5264</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.
preprocessor = Use the new C\C++ preprocessor
utf-8 = interpret all source files as UTF-8 (Required as MSVC relies on UTF-8 signature, which is not used)
-->
<AdditionalOptions>/Zc:__cplusplus /Zc:throwingNew /Zc:preprocessor /utf-8 %(AdditionalOptions)</AdditionalOptions>
<AdditionalIncludeDirectories>$(MSBuildThisFileDirectory)charls/include</AdditionalIncludeDirectories>
<!-- Enable build STL module, needed for import std; -->
<BuildStlModules>true</BuildStlModules>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<TreatLinkerWarningAsErrors>true</TreatLinkerWarningAsErrors>
<MinimumRequiredVersion>10</MinimumRequiredVersion>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)'=='Checked'">
<ClCompile>
<!-- Clang-tidy generates false clang-diagnostic-unused-command-line-argument warnings, use not all options.-->
<AdditionalOptions>/Zc:__cplusplus /utf-8 /ZH:SHA_256</AdditionalOptions>
</ClCompile>
</ItemDefinitionGroup>
<PropertyGroup Condition="'$(Configuration)'=='Release'">
<RunCodeAnalysis>true</RunCodeAnalysis>
<EnableCppCoreCheck>true</EnableCppCoreCheck>
<EnableMicrosoftCodeAnalysis>true</EnableMicrosoftCodeAnalysis>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)'=='Checked'">
<RunCodeAnalysis>true</RunCodeAnalysis>
<EnableCppCoreCheck>true</EnableCppCoreCheck>
<EnableMicrosoftCodeAnalysis>true</EnableMicrosoftCodeAnalysis>
<!-- Latest clang-tidy crashes during Win32 builds and clang-tidy is not available for ARM64. -->
<EnableClangTidyCodeAnalysis Condition="'$(Platform)'!='Win32' AND '$(Platform)'!='ARM64'">true</EnableClangTidyCodeAnalysis>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)'=='Release'">
<ClCompile>
<!-- For release builds, enable the MS static analyzer build into the C++ compiler. -->
<EnablePREfast>true</EnablePREfast>
</ClCompile>
</ItemDefinitionGroup>
</Project>