X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=CMakeLists.txt;h=3e5c613fffaa23a5f2f526ba733007ad74fccadd;hb=6869c3adffe2d938faa457d0bd457ce38dcc8afb;hp=90853559a82efc4eef4b400dd2ec9c247acb8d7a;hpb=968f7e8cacac366fe86466c1ed74a3cd5fe3387c;p=features.git diff --git a/CMakeLists.txt b/CMakeLists.txt index 90853559a8..3e5c613fff 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,13 +6,11 @@ cmake_minimum_required(VERSION 3.1.0) -set(CMAKE_CXX_STANDARD 20) set(GNUWIN32_DIR D:/LyX/lyx-unstable/lyx-windows-deps-msvc2017) set(LYX_USE_QT "QT5") set(LYX_REQUIRE_SPELLCHECK true) set(LYX_PROJECT LyX) - # Instruct cmake to not use gnu extensions, # this prevents the mix of '-std=c++*' and '-std=gnu++*' flags set(CMAKE_CXX_EXTENSIONS OFF) @@ -692,14 +690,33 @@ else() if(NOT LYX_QUIET) set(CMAKE_VERBOSE_MAKEFILE ON) endif() - set(LYX_CXX_FLAGS "-Wall -Wunused-parameter ${LYX_GCC11_MODE}${LYX_CXX_FLAGS}") - if(LYX_GCC11_MODE MATCHES "\\+\\+(14|11|98)") + if(LYX_GCC11_MODE MATCHES "\\+\\+([0-9][0-9])") # Thanks to Brad King # 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(CMAKE_CXX_STANDARD ${CMAKE_MATCH_1}) - message(STATUS "CMAKE_CXX_STANDARD set to ${CMAKE_CXX_STANDARD}") + set(std_num ${CMAKE_MATCH_1}) + # Try to find a std-cxx-feature supported by this cmake version + while (std_num GREATER 0) + list(FIND CMAKE_CXX_COMPILE_FEATURES "cxx_std_${std_num}" stdfeature) + if (stdfeature GREATER -1) + set(CMAKE_CXX_STANDARD ${std_num}) + break() + endif() + math(EXPR std_num "${std_num}-1") + endwhile() + message(STATUS "std_num = ${std_num}") + if (std_num EQUAL 0) + # not found appropriate feature + # so we use LYX_GCC11_MODE + set(LYX_CXX_FLAGS "-Wall -Wunused-parameter ${LYX_GCC11_MODE}${LYX_CXX_FLAGS}") + else() + message(STATUS "CMAKE_CXX_STANDARD set to ${CMAKE_CXX_STANDARD}") + set(LYX_CXX_FLAGS "-Wall -Wunused-parameter ${LYX_CXX_FLAGS}") + endif() + message(STATUS "Setting LYX_CXX_FLAGS to ${LYX_CXX_FLAGS}") + else() + set(LYX_CXX_FLAGS "-Wall -Wunused-parameter ${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")