On newer cmake versions which support it, use more portable way to set c++ standard version

This commit is contained in:
Sebastian Messmer 2016-03-04 00:33:10 +01:00
parent 61611d03b2
commit c2c2a6f1dc
1 changed files with 19 additions and 14 deletions

View File

@ -6,20 +6,25 @@ include(CheckCXXCompilerFlag)
# Uses: target_activate_cpp14(buildtarget)
###################################################
function(target_activate_cpp14 TARGET)
check_cxx_compiler_flag("-std=c++14" COMPILER_HAS_CPP14_SUPPORT)
IF (COMPILER_HAS_CPP14_SUPPORT)
target_compile_options(${TARGET} PUBLIC -std=c++14)
ELSE()
check_cxx_compiler_flag("-std=c++1y" COMPILER_HAS_CPP14_PARTIAL_SUPPORT)
IF (COMPILER_HAS_CPP14_PARTIAL_SUPPORT)
target_compile_options(${TARGET} PUBLIC -std=c++1y)
ELSE()
message(FATAL_ERROR "Compiler doesn't support C++14")
ENDIF()
ENDIF()
IF(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
target_compile_options(${TARGET} PUBLIC -stdlib=libc++)
ENDIF()
if("${CMAKE_VERSION}" VERSION_GREATER "3.1")
set_property(TARGET ${TARGET} PROPERTY CXX_STANDARD 14)
set_property(TARGET ${TARGET} PROPERTY CXX_STANDARD_REQUIRED ON)
else("${CMAKE_VERSION}" VERSION_GREATER "3.1")
check_cxx_compiler_flag("-std=c++14" COMPILER_HAS_CPP14_SUPPORT)
if (COMPILER_HAS_CPP14_SUPPORT)
target_compile_options(${TARGET} PUBLIC -std=c++14)
else(COMPILER_HAS_CPP14_SUPPORT)
check_cxx_compiler_flag("-std=c++1y" COMPILER_HAS_CPP14_PARTIAL_SUPPORT)
if (COMPILER_HAS_CPP14_PARTIAL_SUPPORT)
target_compile_options(${TARGET} PUBLIC -std=c++1y)
else()
message(FATAL_ERROR "Compiler doesn't support C++14")
endif()
endif(COMPILER_HAS_CPP14_SUPPORT)
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
target_compile_options(${TARGET} PUBLIC -stdlib=libc++)
endif(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
endif("${CMAKE_VERSION}" VERSION_GREATER "3.1")
endfunction(target_activate_cpp14)
#################################################