diff options
author | Simon Hausmann <simon.hausmann@qt.io> | 2019-10-17 10:14:09 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@qt.io> | 2019-10-17 19:23:25 +0000 |
commit | 7e7f41e40c39361059ce4693c5e3a5e1ccd6f7e5 (patch) | |
tree | 53add24af9d761f86045646d0d74ac438cc03a98 /cmake | |
parent | 2fa23e46c0b79a065d92a95033bfc3ae10b707cf (diff) |
Pick the latest available C/C++ standard when compiling Qt
This maps the behavior of mkspecs/features/qt_common.prf and enables the
use of C++17 for example in Android, where the toolchain supports it
anyway.
Change-Id: I41f4bdb160a3929e2fb78f36efb1ad5f2ad391a5
Reviewed-by: Qt CMake Build Bot
Reviewed-by: MÃ¥rten Nordheim <marten.nordheim@qt.io>
Diffstat (limited to 'cmake')
-rw-r--r-- | cmake/QtBuild.cmake | 19 | ||||
-rw-r--r-- | cmake/QtSetup.cmake | 7 |
2 files changed, 21 insertions, 5 deletions
diff --git a/cmake/QtBuild.cmake b/cmake/QtBuild.cmake index 537979ad8a..48d755450f 100644 --- a/cmake/QtBuild.cmake +++ b/cmake/QtBuild.cmake @@ -3298,3 +3298,22 @@ function(qt_generate_qconfig_cpp) configure_file(global/qconfig.cpp.in global/qconfig.cpp @ONLY) endfunction() + +function(qt_set_language_standards) + ## Use the latest standard the compiler supports (same as qt_common.prf) + if (QT_FEATURE_cxx2a) + set(CMAKE_CXX_STANDARD 20 PARENT_SCOPE) + elseif (QT_FEATURE_cxx17) + set(CMAKE_CXX_STANDARD 17 PARENT_SCOPE) + elseif (QT_FEATURE_cxx14) + set(CMAKE_CXX_STANDARD 14 PARENT_SCOPE) + elseif (QT_FEATURE_cxx11) + set(CMAKE_CXX_STANDARD 11 PARENT_SCOPE) + endif() + + if (c_std_11 IN_LIST CMAKE_C_COMPILE_FEATURES) + set(CMAKE_C_STANDARD 11 PARENT_SCOPE) + elseif (c_std_99 IN_LIST CMAKE_C_COMPILE_FEATURES) + set(CMAKE_C_STANDARD 99 PARENT_SCOPE) + endif() +endfunction() diff --git a/cmake/QtSetup.cmake b/cmake/QtSetup.cmake index 16fd9b7520..6f42e337da 100644 --- a/cmake/QtSetup.cmake +++ b/cmake/QtSetup.cmake @@ -24,11 +24,6 @@ elseif(APPLE) set(CMAKE_DEBUG_POSTFIX "_debug") endif() -## Force C++ standard, do not fall back, do not use compiler extensions -set(CMAKE_CXX_STANDARD 14) -set(CMAKE_CXX_STANDARD_REQUIRED ON) -set(CMAKE_CXX_EXTENSIONS OFF) - ## Position independent code: set(CMAKE_POSITION_INDEPENDENT_CODE ON) @@ -110,6 +105,8 @@ include(QtCompilerFlags) ## Set up non-prefix build: qt_set_up_nonprefix_build() +qt_set_language_standards() + ## Find host tools (if non native): set(QT_HOST_PATH "" CACHE PATH "Installed Qt host directory path, used for cross compiling.") |