[LyX/2.3.x] Cmake build: disable warning deprecated-copy when supported

Kornel Benko kornel at lyx.org
Sat Oct 16 09:08:58 UTC 2021


commit 7572771c0ffaf46349c4181c606f645b6ff8ddaf
Author: Kornel Benko <kornel at lyx.org>
Date:   Sat Oct 16 11:23:34 2021 +0200

    Cmake build: disable warning deprecated-copy when supported
---
 CMakeLists.txt |   19 +++++++++++++++++--
 1 files changed, 17 insertions(+), 2 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index e4cf8bb..1cff7fe 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -634,14 +634,29 @@ if(NOT MSVC)
 	if(NOT LYX_QUIET)
 		set(CMAKE_VERBOSE_MAKEFILE ON)
 	endif()
-	set(LYX_CXX_FLAGS "-Wall -Wunused-parameter ${LYX_GCC11_MODE}")
-	if(LYX_CXX_FLAGS MATCHES "\\+\\+(14|11|98)")
+	if(LYX_GCC11_MODE MATCHES "\\+\\+([0-9][0-9])")
 	  # Thanks to Brad King <brad.king at kitware.com>
 	  # for the pointer to https://cmake.org/cmake/help/v3.6/variable/CMAKE_CXX_STANDARD.html
 	  # This allows us to use QT5.7 with recent g++ (version >= 4.9) compilers
 	  # and still use our own c++ extension tests
+	  set(std_num ${CMAKE_MATCH_1})
 	  set(CMAKE_CXX_STANDARD ${CMAKE_MATCH_1})
 	  message(STATUS "CMAKE_CXX_STANDARD set to ${CMAKE_CXX_STANDARD}")
+	else()
+	  message(STATUS "Setting CMAKE_CXX_STANDARD 11 as fallback")
+	  set(CMAKE_CXX_STANDARD 11)
+	  set(LYX_GCC11_MODE "--std=c++11")
+	endif()
+	# The following setting with LYX_GCC11_MODE is needed because cmake does not honor
+	# CMAKE_CXX_STANDARD while performing tests like
+	# check_cxx_source_compiles("..." HAVE_DEF_MAKE_UNIQUE)
+	include(CheckCXXCompilerFlag)
+	unset(CHECK_WNODEPRECATEDCOPY_FLAG CACHE)
+	CHECK_CXX_COMPILER_FLAG("-Wdeprecated-copy" CHECK_WNODEPRECATEDCOPY_FLAG)
+	if(${CHECK_WNODEPRECATEDCOPY_FLAG})
+		set(LYX_CXX_FLAGS "-Wall -Wextra -Wno-deprecated-copy ${LYX_GCC11_MODE}${LYX_CXX_FLAGS}")
+	else()
+		set(LYX_CXX_FLAGS "-Wall -Wextra ${LYX_GCC11_MODE}${LYX_CXX_FLAGS}")
 	endif()
 	if(LYX_STDLIB_DEBUG)
 		set(LYX_CXX_FLAGS "${LYX_CXX_FLAGS} -D_GLIBCXX_DEBUG -D_GLIBCXX_DEBUG_PEDANTIC")


More information about the lyx-cvs mailing list