From afa2be7d927a32f329d121130efe4d1db30c1072 Mon Sep 17 00:00:00 2001 From: Michael Kuron <mkuron@icp.uni-stuttgart.de> Date: Mon, 11 Nov 2019 14:44:56 +0100 Subject: [PATCH] CMake: don't use CMAKE_CXX14_STANDARD_COMPILE_OPTION directly, instead go through CMAKE_CXX_STANDARD --- CMakeLists.txt | 31 +++++++++++++++---------------- cmake/TestStdAny.cpp | 3 ++- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f6d4810a7..c138a8187 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -139,6 +139,9 @@ endif() ############################################################################################################################ +set( CMAKE_CXX_STANDARD 14 ) +set( CMAKE_CXX_STANDARD_REQUIRED ON ) +set( CMAKE_CXX_EXTENSIONS OFF ) ############################################################################################################################ ## @@ -172,7 +175,7 @@ if( CMAKE_CXX_COMPILER MATCHES "icpc" OR CMAKE_CXX_COMPILER_ARG1 MATCHES "icpc" MARK_AS_ADVANCED(XILD) if( CMAKE_VERSION VERSION_LESS 3.6.0 ) set( CMAKE_CXX14_STANDARD_COMPILE_OPTION "-std=c++14" ) - add_flag ( CMAKE_CXX_FLAGS ${CMAKE_CXX14_STANDARD_COMPILE_OPTION} ) + add_flag ( CMAKE_CXX_FLAGS ${CMAKE_CXX${CMAKE_CXX_STANDARD}_STANDARD_COMPILE_OPTION} ) endif() else() option ( WALBERLA_CXX_COMPILER_IS_INTEL "Use Intel compiler" OFF ) @@ -278,10 +281,6 @@ if ( WALBERLA_PROFILE_USE ) endif() endif() -set( CMAKE_CXX_STANDARD 14 ) -set( CMAKE_CXX_STANDARD_REQUIRED ON ) -set( CMAKE_CXX_EXTENSIONS OFF ) - # common flags for intel and g++ if ( NOT WARNING_DISABLE AND ( WALBERLA_CXX_COMPILER_IS_GNU OR WALBERLA_CXX_COMPILER_IS_INTEL ) ) add_flag ( CMAKE_CXX_FLAGS "-Wall -Wconversion -Wshadow" ) @@ -290,7 +289,7 @@ endif() # C++ language features for NEC compiler if( WALBERLA_CXX_COMPILER_IS_NEC ) set( CMAKE_CXX14_STANDARD_COMPILE_OPTION "-Kcpp14" ) - add_flag ( CMAKE_CXX_FLAGS "${CMAKE_CXX14_STANDARD_COMPILE_OPTION} -Krtti -Kexceptions -size_t64 -Kgcc" ) + add_flag ( CMAKE_CXX_FLAGS "${CMAKE_CXX${CMAKE_CXX_STANDARD}_STANDARD_COMPILE_OPTION} -Krtti -Kexceptions -size_t64 -Kgcc" ) add_flag ( CMAKE_CXX_FLAGS "-D__BIG_ENDIAN -D__BYTE_ORDER=__BIG_ENDIAN" ) add_flag ( CMAKE_CXX_FLAGS "-Tnoauto,used" ) add_flag ( CMAKE_EXE_LINKER_FLAGS "-Wl,-h,muldefs" ) @@ -442,19 +441,19 @@ endif() ############################################################################################################################ try_compile( WALBERLA_USE_STD_FILESYSTEM "${CMAKE_CURRENT_BINARY_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/cmake/TestStdFilesystem.cpp" - COMPILE_DEFINITIONS -DWALBERLA_USE_STD_FILESYSTEM ${CMAKE_CXX14_STANDARD_COMPILE_OPTION} ) + COMPILE_DEFINITIONS -DWALBERLA_USE_STD_FILESYSTEM ${CMAKE_CXX${CMAKE_CXX_STANDARD}_STANDARD_COMPILE_OPTION} ) if( WALBERLA_USE_STD_FILESYSTEM ) message( STATUS "Found std::filesystem") else() try_compile( WALBERLA_USE_STD_EXPERIMENTAL_FILESYSTEM "${CMAKE_CURRENT_BINARY_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/cmake/TestStdFilesystem.cpp" - COMPILE_DEFINITIONS -DWALBERLA_USE_STD_EXPERIMENTAL_FILESYSTEM ${CMAKE_CXX14_STANDARD_COMPILE_OPTION} ) + COMPILE_DEFINITIONS -DWALBERLA_USE_STD_EXPERIMENTAL_FILESYSTEM ${CMAKE_CXX${CMAKE_CXX_STANDARD}_STANDARD_COMPILE_OPTION} ) if( WALBERLA_USE_STD_EXPERIMENTAL_FILESYSTEM ) message( STATUS "Found std::experimental::filesystem") endif() if( NOT WALBERLA_CXX_COMPILER_IS_MSVC AND NOT WALBERLA_USE_STD_EXPERIMENTAL_FILESYSTEM ) unset( WALBERLA_USE_STD_EXPERIMENTAL_FILESYSTEM CACHE ) try_compile( WALBERLA_USE_STD_EXPERIMENTAL_FILESYSTEM "${CMAKE_CURRENT_BINARY_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/cmake/TestStdFilesystem.cpp" - COMPILE_DEFINITIONS -DWALBERLA_USE_STD_EXPERIMENTAL_FILESYSTEM ${CMAKE_CXX14_STANDARD_COMPILE_OPTION} + COMPILE_DEFINITIONS -DWALBERLA_USE_STD_EXPERIMENTAL_FILESYSTEM ${CMAKE_CXX${CMAKE_CXX_STANDARD}_STANDARD_COMPILE_OPTION} LINK_LIBRARIES stdc++fs ) if( WALBERLA_USE_STD_EXPERIMENTAL_FILESYSTEM ) message( STATUS "Found std::experimental::filesystem in libstdc++fs") @@ -464,7 +463,7 @@ else() if( NOT WALBERLA_CXX_COMPILER_IS_MSVC AND NOT WALBERLA_USE_STD_EXPERIMENTAL_FILESYSTEM ) unset( WALBERLA_USE_STD_EXPERIMENTAL_FILESYSTEM CACHE ) try_compile( WALBERLA_USE_STD_EXPERIMENTAL_FILESYSTEM "${CMAKE_CURRENT_BINARY_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/cmake/TestStdFilesystem.cpp" - COMPILE_DEFINITIONS -DWALBERLA_USE_STD_EXPERIMENTAL_FILESYSTEM ${CMAKE_CXX14_STANDARD_COMPILE_OPTION} + COMPILE_DEFINITIONS -DWALBERLA_USE_STD_EXPERIMENTAL_FILESYSTEM ${CMAKE_CXX${CMAKE_CXX_STANDARD}_STANDARD_COMPILE_OPTION} LINK_LIBRARIES c++experimental ) if( WALBERLA_USE_STD_EXPERIMENTAL_FILESYSTEM ) message( STATUS "Found std::experimental::filesystem in libc++experimental") @@ -474,31 +473,31 @@ else() endif() try_compile( WALBERLA_USE_STD_ANY "${CMAKE_CURRENT_BINARY_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/cmake/TestStdAny.cpp" - COMPILE_DEFINITIONS -DWALBERLA_USE_STD_ANY ${CMAKE_CXX14_STANDARD_COMPILE_OPTION} ) + COMPILE_DEFINITIONS -DWALBERLA_USE_STD_ANY ${CMAKE_CXX${CMAKE_CXX_STANDARD}_STANDARD_COMPILE_OPTION} ) if( WALBERLA_USE_STD_ANY ) message( STATUS "Found std::any") else() try_compile( WALBERLA_USE_STD_EXPERIMENTAL_ANY "${CMAKE_CURRENT_BINARY_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/cmake/TestStdAny.cpp" - COMPILE_DEFINITIONS -DWALBERLA_USE_STD_EXPERIMENTAL_ANY ${CMAKE_CXX14_STANDARD_COMPILE_OPTION} ) + COMPILE_DEFINITIONS -DWALBERLA_USE_STD_EXPERIMENTAL_ANY ${CMAKE_CXX${CMAKE_CXX_STANDARD}_STANDARD_COMPILE_OPTION} ) if( WALBERLA_USE_STD_EXPERIMENTAL_ANY ) message( STATUS "Found std::experimental::any") endif() endif() try_compile( WALBERLA_USE_STD_OPTIONAL "${CMAKE_CURRENT_BINARY_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/cmake/TestStdOptional.cpp" - COMPILE_DEFINITIONS -DWALBERLA_USE_STD_OPTIONAL ${CMAKE_CXX14_STANDARD_COMPILE_OPTION} ) + COMPILE_DEFINITIONS -DWALBERLA_USE_STD_OPTIONAL ${CMAKE_CXX${CMAKE_CXX_STANDARD}_STANDARD_COMPILE_OPTION} ) if( WALBERLA_USE_STD_OPTIONAL ) message( STATUS "Found std::optional") else() try_compile( WALBERLA_USE_STD_EXPERIMENTAL_OPTIONAL "${CMAKE_CURRENT_BINARY_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/cmake/TestStdOptional.cpp" - COMPILE_DEFINITIONS -DWALBERLA_USE_STD_EXPERIMENTAL_OPTIONAL ${CMAKE_CXX14_STANDARD_COMPILE_OPTION} ) + COMPILE_DEFINITIONS -DWALBERLA_USE_STD_EXPERIMENTAL_OPTIONAL ${CMAKE_CXX${CMAKE_CXX_STANDARD}_STANDARD_COMPILE_OPTION} ) if( WALBERLA_USE_STD_EXPERIMENTAL_OPTIONAL ) message( STATUS "Found std::experimental::optional") endif() endif() try_compile( WALBERLA_USE_STD_VARIANT "${CMAKE_CURRENT_BINARY_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/cmake/TestStdVariant.cpp" - COMPILE_DEFINITIONS -DWALBERLA_USE_STD_VARIANT ${CMAKE_CXX14_STANDARD_COMPILE_OPTION} ) + COMPILE_DEFINITIONS -DWALBERLA_USE_STD_VARIANT ${CMAKE_CXX${CMAKE_CXX_STANDARD}_STANDARD_COMPILE_OPTION} ) if( WALBERLA_USE_STD_VARIANT ) message( STATUS "Found std::variant") endif() @@ -1132,7 +1131,7 @@ if ( WALBERLA_BUILD_WITH_CUDA ) endif() if ( NOT "${CUDA_NVCC_FLAGS}" MATCHES "-std=" AND NOT WALBERLA_CXX_COMPILER_IS_MSVC ) - list ( APPEND CUDA_NVCC_FLAGS "-std=c++14" ) + list ( APPEND CUDA_NVCC_FLAGS "-std=c++${CMAKE_CXX_STANDARD}" ) endif () if(CMAKE_BUILD_TYPE MATCHES Debug) diff --git a/cmake/TestStdAny.cpp b/cmake/TestStdAny.cpp index 6b7e22269..6bcc880a6 100644 --- a/cmake/TestStdAny.cpp +++ b/cmake/TestStdAny.cpp @@ -8,9 +8,10 @@ int main() { #if defined(WALBERLA_USE_STD_ANY) auto a = std::any(42); + std::cout << std::any_cast<int>(a) << std::endl; #elif defined(WALBERLA_USE_STD_EXPERIMENTAL_ANY) auto a = std::experimental::any(42); -#endif std::cout << std::experimental::any_cast<int>(a) << std::endl; +#endif return 0; } -- GitLab