OSDN Git Service

Adapt to latest VS2017 version 15.8
authorGreyMerlin <GreyMerlin@gmail.com>
Fri, 17 Aug 2018 00:43:56 +0000 (17:43 -0700)
committerGreyMerlin <GreyMerlin@gmail.com>
Fri, 17 Aug 2018 00:43:56 +0000 (17:43 -0700)
* As is often the case, the boost library needs to update its warning
message for the new compiler version.

* There is a bug in the gtest software; it is using a non-portable
`operator<<` overload.  The ambiguity of this usage is now being
flagged as an error by version 15.8.  There have been many updates to
the gtest software since the version incorporated into WinMerge, but
fortunately the "accepted" and merged solution to this problem simply
drops into WinMerge without issue (although I've added some comments
referencing the gtest PR#1620 -
https://github.com/google/googletest/pull/1620)

* Unfortunately, in order to trigger the source code in gtest PR#1620,
the value of the predefined macro `__cplusplus` must be accurate.  For
various reasons (see
https://blogs.msdn.microsoft.com/vcblog/2018/04/09/msvc-now-correctly-reports-__cplusplus/)
the compiler option `Zc:__cplusplus` must be set in order to generate
correct values for `__cplusplus`.  The changes to the
`*.vs2017.vcxproj`file accomplish this.  Note that the elimination of
the "additional option" `/EHa` is acceptable because that option is
properly specified elsewhere in the project's build properties.

Externals/boost/boost/config/compiler/visualc.hpp
Externals/gtest/include/gtest/gtest-printers.h
Src/Merge.vs2017.vcxproj

index 6b8b0a2..32eaaac 100644 (file)
 // VS2017 Version 15.5.0 (cl compiler version 19.12.25830.2) updated _MSC_VER to 1912 - BillGord 06 Dec 2017\r
 // VS2017 Version 15.6.1 (cl compiler version 19.13.26128) updated _MSC_VER to 1913 - BillGord 06 Mar 2018\r
 // VS2017 Version 15.7.1 (cl compiler version 19.14.26428.1) updated _MSC_VER to 1914 - BillGord 20 May 2018\r
-#if (_MSC_VER > 1914)\r
+// VS2017 Version 15.8.0 (cl compiler version 19.15.26726) updated _MSC_VER to 1915 - BillGord 15 Aug 2018\r
+#if (_MSC_VER > 1915)\r
 #  if defined(BOOST_ASSERT_CONFIG)\r
 #     error "Unknown compiler version - please run the configure tests and report the results"\r
 #  else\r
index 0639d9f..ec884d3 100644 (file)
@@ -480,6 +480,14 @@ inline void PrintTo(const ::std::wstring& s, ::std::ostream* os) {
 }
 #endif  // GTEST_HAS_STD_WSTRING
 
+//! see "Address #1616, add printer for std::nullptr_t" PR#1620 (merged)
+//!            https://github.com/google/googletest/pull/1620
+//! and "Workaround nonportable operator<< assumptions in VS2017 15.8" PR#1617
+//! and "Google Test fails to compile if a standard library implements LWG 2221" PR#1616
+#if GTEST_LANG_CXX11
+inline void PrintTo(std::nullptr_t, ::std::ostream* os) { *os << "(nullptr)"; }
+#endif  // GTEST_LANG_CXX11
+
 #if GTEST_HAS_TR1_TUPLE
 // Overload for ::std::tr1::tuple.  Needed for printing function arguments,
 // which are packed as tuples.
index aac4441..cf55f01 100644 (file)
       </HeaderFileName>\r
     </Midl>\r
     <ClCompile>\r
-      <AdditionalOptions>/EHa  %(AdditionalOptions)</AdditionalOptions>\r
+      <AdditionalOptions>/Zc:__cplusplus %(AdditionalOptions)</AdditionalOptions>\r
       <Optimization>MinSpace</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
       <AdditionalIncludeDirectories>.;.\CompareEngines;.\Common;..\Externals\crystaledit\editlib;.\diffutils;.\diffutils\lib;.\diffutils\src;..\Externals\boost;..\Externals\poco\Foundation\include;..\Externals\poco\XML\include;..\Externals\poco\Util\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       </HeaderFileName>\r
     </Midl>\r
     <ClCompile>\r
-      <AdditionalOptions>/EHa  %(AdditionalOptions)</AdditionalOptions>\r
+      <AdditionalOptions>/Zc:__cplusplus %(AdditionalOptions)</AdditionalOptions>\r
       <Optimization>MinSpace</Optimization>\r
       <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>\r
       <AdditionalIncludeDirectories>.;.\CompareEngines;.\Common;..\Externals\crystaledit\editlib;.\diffutils;.\diffutils\lib;.\diffutils\src;..\Externals\boost;..\Externals\poco\Foundation\include;..\Externals\poco\XML\include;..\Externals\poco\Util\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       </HeaderFileName>\r
     </Midl>\r
     <ClCompile>\r
-      <AdditionalOptions>/EHa  %(AdditionalOptions)</AdditionalOptions>\r
+      <AdditionalOptions>/Zc:__cplusplus %(AdditionalOptions)</AdditionalOptions>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>.;.\CompareEngines;.\Common;..\Externals\crystaledit\editlib;.\diffutils;.\diffutils\lib;.\diffutils\src;..\Externals\boost;..\Externals\poco\Foundation\include;..\Externals\poco\XML\include;..\Externals\poco\Util\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>WINVER=0x0501;_DEBUG;WIN32;_WINDOWS;__NT__;POCO_STATIC;_SILENCE_ALL_CXX17_DEPRECATION_WARNINGS;PR_FILE_NAME="pr";EDITPADC_CLASS=;UNICODE;_AFX_NO_MFC_CONTROLS_IN_DIALOGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       </HeaderFileName>\r
     </Midl>\r
     <ClCompile>\r
-      <AdditionalOptions>/EHa  %(AdditionalOptions)</AdditionalOptions>\r
+      <AdditionalOptions>/Zc:__cplusplus %(AdditionalOptions)</AdditionalOptions>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>.;..\Externals\gtest;..\Externals\gtest\include;.\CompareEngines;.\Common;..\Externals\crystaledit\editlib;.\diffutils;.\diffutils\lib;.\diffutils\src;..\Externals\boost;..\Externals\poco\Foundation\include;..\Externals\poco\XML\include;..\Externals\poco\Util\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>TEST_WINMERGE;WINVER=0x0501;_DEBUG;WIN32;_WINDOWS;__NT__;POCO_STATIC;PR_FILE_NAME="pr";EDITPADC_CLASS=;UNICODE;_AFX_NO_MFC_CONTROLS_IN_DIALOGS;_SILENCE_ALL_CXX17_DEPRECATION_WARNINGS;GTEST_HAS_TR1_TUPLE=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       </HeaderFileName>\r
     </Midl>\r
     <ClCompile>\r
-      <AdditionalOptions>/EHa  %(AdditionalOptions)</AdditionalOptions>\r
+      <AdditionalOptions>/Zc:__cplusplus %(AdditionalOptions)</AdditionalOptions>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>.;.\CompareEngines;.\Common;..\Externals\crystaledit\editlib;.\diffutils;.\diffutils\lib;.\diffutils\src;..\Externals\boost;..\Externals\poco\Foundation\include;..\Externals\poco\XML\include;..\Externals\poco\Util\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>WINVER=0x0501;_DEBUG;WIN64;_WINDOWS;__NT__;POCO_STATIC;_SILENCE_ALL_CXX17_DEPRECATION_WARNINGS;PR_FILE_NAME="pr";EDITPADC_CLASS=;UNICODE;_AFX_NO_MFC_CONTROLS_IN_DIALOGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       </HeaderFileName>\r
     </Midl>\r
     <ClCompile>\r
-      <AdditionalOptions>/EHa  %(AdditionalOptions)</AdditionalOptions>\r
+      <AdditionalOptions>/Zc:__cplusplus %(AdditionalOptions)</AdditionalOptions>\r
       <Optimization>Disabled</Optimization>\r
       <AdditionalIncludeDirectories>.;..\Externals\gtest;..\Externals\gtest\include;.\CompareEngines;.\Common;..\Externals\crystaledit\editlib;.\diffutils;.\diffutils\lib;.\diffutils\src;..\Externals\boost;..\Externals\poco\Foundation\include;..\Externals\poco\XML\include;..\Externals\poco\Util\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
       <PreprocessorDefinitions>TEST_WINMERGE;WINVER=0x0501;_DEBUG;WIN64;_WINDOWS;__NT__;POCO_STATIC;PR_FILE_NAME="pr";EDITPADC_CLASS=;UNICODE;_AFX_NO_MFC_CONTROLS_IN_DIALOGS;_SILENCE_ALL_CXX17_DEPRECATION_WARNINGS;GTEST_HAS_TR1_TUPLE=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r