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()