function(target_flag_rtti_msvc TARGET_NAME ENABLED) if(ENABLED) target_compile_options(${TARGET_NAME} PRIVATE /GR) else() target_compile_options(${TARGET_NAME} PRIVATE /GR-) endif() endfunction() function(target_flag_rtti_gcc TARGET_NAME ENABLED) if(ENABLED) target_compile_options(${TARGET_NAME} PRIVATE -frtti) else() target_compile_options(${TARGET_NAME} PRIVATE -fno-rtti) endif() endfunction() function(target_flag_rtti TARGET_NAME ENABLED) if(CMAKE_CXX_COMPILER_ID MATCHES "MSVC") target_flag_rtti_msvc(${TARGET_NAME} ${ENABLED}) elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang") if(CMAKE_CXX_COMPILER_FRONTEND_VARIANT MATCHES "MSVC") target_flag_rtti_msvc(${TARGET_NAME} ${ENABLED}) elseif(CMAKE_CXX_COMPILER_FRONTEND_VARIANT MATCHES "GNU") target_flag_rtti_gcc(${TARGET_NAME} ${ENABLED}) endif() elseif(CMAKE_CXX_COMPILER_ID MATCHES "GNU") target_flag_rtti_gcc(${TARGET_NAME} ${ENABLED}) else() message(FATAL "target_flag_rtti(): Unknown compiler ${CMAKE_CXX_COMPILER_ID}") endif() endfunction()