]> git.lyx.org Git - features.git/commitdiff
Cmake build: Adapt handling of c++ standards to new Visual C++ 2019
authorKornel Benko <kornel@lyx.org>
Tue, 5 May 2020 11:49:50 +0000 (13:49 +0200)
committerKornel Benko <kornel@lyx.org>
Tue, 5 May 2020 11:49:50 +0000 (13:49 +0200)
More or less suggested by Thibaut Cuvelier's switch to Visual C++ 2019

CMakeLists.txt
development/cmake/modules/FindCXX11Compiler.cmake

index 2a123e7c34974938be7eca1d424f1db0e54dc681..618f62ac3246d21fcb3d5c9a8a3d799b7477789a 100644 (file)
@@ -657,7 +657,12 @@ else()
        set(library_type STATIC)
 endif()
 
-if(NOT MSVC)
+if(MSVC)
+  if (CXX11_FLAG MATCHES "\\+\\+([0-9]+)")
+    set(CMAKE_CXX_STANDARD ${CMAKE_MATCH_1})
+    message(STATUS "CMAKE_CXX_STANDARD set to ${CMAKE_CXX_STANDARD}")
+  endif()
+else()
        if(NOT LYX_QUIET)
                set(CMAKE_VERBOSE_MAKEFILE ON)
        endif()
index 739d267bf0781a55e7a089a8ef9b83ad84d117f2..e1bf1fbdc5faab25ac118e0869d697ad8a9a5e3b 100644 (file)
@@ -44,7 +44,15 @@ else()
       # MSVC does not have a general C++11 flag, one can only switch off
       # MS extensions with /Za in general or by extension with /Zc.
       # Use an empty flag to ensure that CXX11_STD_REGEX is correctly set.
-      set(CXX11_FLAG_CANDIDATES "noflagneeded")
+      if (MSVC_VERSION LESS 1926)
+       set(CXX11_FLAG_CANDIDATES "noflagneeded")
+      else()
+       set(CXX11_FLAG_CANDIDATES
+         "/std:c++20"
+         "/std:c++17"
+         "/std:c++14"
+         "noflagneeded")
+      endif()
     else()
       set(CXX11_FLAG_CANDIDATES
         "--std=c++14"
@@ -113,7 +121,9 @@ set(SAFE_CMAKE_REQUIRED_QUIET ${CMAKE_REQUIRED_QUIET})
 set(CMAKE_REQUIRED_QUIET ON)
 SET(SAFE_CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS}")
 FOREACH(FLAG ${CXX11_FLAG_CANDIDATES})
-  IF(NOT "${FLAG}" STREQUAL "noflagneeded")
+  IF("${FLAG}" STREQUAL "noflagneeded")
+    UNSET(CMAKE_REQUIRED_FLAGS)
+  ELSE()
     SET(CMAKE_REQUIRED_FLAGS "${FLAG}")
   ENDIF()
   UNSET(CXX11_FLAG_DETECTED CACHE)