blob: 89e7e6907f1af71d931bd5bb5097cc93dc326efb (
plain)
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
|
function(target_flag_exceptions_msvc TARGET_NAME ENABLED)
if(ENABLED)
target_compile_options(${TARGET_NAME} PRIVATE /EHsc)
else()
target_compile_options(${TARGET_NAME} PRIVATE /EH-)
endif()
endfunction()
function(target_flag_exceptions_gcc TARGET_NAME ENABLED)
if(ENABLED)
target_compile_options(${TARGET_NAME} PRIVATE -fexceptions)
else()
target_compile_options(${TARGET_NAME} PRIVATE -fno-exceptions)
endif()
endfunction()
function(target_flag_exceptions TARGET_NAME ENABLED)
if(CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
target_flag_exceptions_msvc(${TARGET_NAME} ${ENABLED})
elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
if(CMAKE_CXX_COMPILER_FRONTEND_VARIANT MATCHES "MSVC")
target_flag_exceptions_msvc(${TARGET_NAME} ${ENABLED})
elseif(CMAKE_CXX_COMPILER_FRONTEND_VARIANT MATCHES "GNU")
target_flag_exceptions_gcc(${TARGET_NAME} ${ENABLED})
endif()
elseif(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
target_flag_exceptions_gcc(${TARGET_NAME} ${ENABLED})
else()
message(FATAL "target_flag_exceptions(): Unknown compiler ${CMAKE_CXX_COMPILER_ID}")
endif()
endfunction()
|