fix c++98 being detected as newer than c++11

This commit is contained in:
Ferdinand Bachmann
2020-04-18 15:33:56 +02:00
parent d67b00aa2f
commit 34260c53cb
3 changed files with 19 additions and 3 deletions

View File

@ -22,7 +22,6 @@ endif()
add_library(ring-buffer INTERFACE)
target_include_directories(ring-buffer INTERFACE include/)
target_compile_features(ring-buffer INTERFACE cxx_std_11)
if(RING_BUFFER_CONSTEXPR)
target_compile_definitions(ring-buffer INTERFACE RING_BUFFER_CONSTEXPR)

5
detect/cxxstd.cpp Normal file
View File

@ -0,0 +1,5 @@
#if __cpluplus < CXX_STANDARD
#error "c++ standard not new enough"
#endif
int main() {}

View File

@ -1,9 +1,21 @@
if(${CMAKE_CXX_STANDARD} GREATER_EQUAL 11)
try_compile(cxx-least-11 ${CMAKE_BINARY_DIR}/detect ${CMAKE_SOURCE_DIR}/detect/cxxstd.cpp
COMPILE_DEFINITIONS CXX_STANDARD=201103L
CMAKE_CXX_STANDARD ${CMAKE_CXX_STANDARD}
CXX_STANDARD_REQUIRED ${CMAKE_CXX_STANDARD_REQUIRED}
CXX_EXTENSIONS ${CMAKE_CXX_EXTENSIONS}
)
if(cxx-least-11)
set(RING_BUFFER_NOEXCEPT ON)
message(STATUS "Enabling RING_BUFFER_NOEXCEPT (C++11 and up)")
endif()
if(${CMAKE_CXX_STANDARD} GREATER_EQUAL 14)
try_compile(cxx-least-14 ${CMAKE_BINARY_DIR}/detect ${CMAKE_SOURCE_DIR}/detect/cxxstd.cpp
COMPILE_DEFINITIONS CXX_STANDARD=201402L
CMAKE_CXX_STANDARD ${CMAKE_CXX_STANDARD}
CXX_STANDARD_REQUIRED ${CMAKE_CXX_STANDARD_REQUIRED}
CXX_EXTENSIONS ${CMAKE_CXX_EXTENSIONS}
)
if(cxx-least-14)
set(RING_BUFFER_CONSTEXPR ON)
message(STATUS "Enabling RING_BUFFER_CONSTEXPR (C++14 and up)")
endif()