1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
|
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED on)
set(CMAKE_CXX_EXTENSIONS OFF)
include(DetectCPUFeatures)
include(FindCxaDemangle)
CheckAndAppendCompilerFlags(${CMAKE_BUILD_TYPE} "-Wall")
CheckAndAppendCompilerFlags(${CMAKE_BUILD_TYPE} "-Werror")
CheckAndAppendCompilerFlags(${CMAKE_BUILD_TYPE} "-Wextra")
CheckAndAppendCompilerFlags(${CMAKE_BUILD_TYPE} "-pedantic")
CheckAndAppendCompilerFlags("Release" "-ffast-math")
CheckAndAppendCompilerFlags("Release" "-funroll-loops")
CheckAndAppendCompilerFlags("Release" "-D__extern_always_inline=\"extern __always_inline\" ")
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel")
CheckAndAppendCompilerFlags("Release" "-no-inline-min-size -no-inline-max-size")
endif ()
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
CheckAndAppendCompilerFlags("Release" "/EHsc")
CheckAndAppendCompilerFlags("Debug" "/Od")
CheckAndAppendCompilerFlags("Release" "/Ox")
set(vars CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO)
foreach(var ${vars})
string(REPLACE "/MD" "-MT" ${var} "${${var}}")
endforeach(var)
add_definitions("/DMSVC_COMPILER")
endif ()
if ( CODE_COVERAGE )
CheckAndAppendCompilerFlags("Debug" "-g -fprofile-arcs -ftest-coverage -lgcov")
endif()
if(APPLE)
if(USE_LIBCPP AND ("${CMAKE_CXX_COMPILER_ID}" MATCHES "^(Apple)?Clang$"))
CheckAndAppendCompilerFlags(${CMAKE_BUILD_TYPE} "-stdlib=libc++")
endif()
endif()
|