Index: kde-modules/KDECompilerSettings.cmake =================================================================== --- kde-modules/KDECompilerSettings.cmake +++ kde-modules/KDECompilerSettings.cmake @@ -264,9 +264,9 @@ if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-exceptions") elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-exceptions") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-exceptions -DQT_NO_EXCEPTIONS") elseif (CMAKE_CXX_COMPILER_ID STREQUAL "Intel" AND NOT WIN32) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-exceptions") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-exceptions -DQT_NO_EXCEPTIONS") #elseif (MSVC OR (WIN32 AND CMAKE_CXX_COMPILER_ID STREQUAL "Intel")) # Exceptions appear to be disabled by default for MSVC # http://msdn.microsoft.com/en-us/library/1deeycx5.aspx @@ -284,9 +284,13 @@ set(${VAR} "${${VAR}} -fexceptions") endif() elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") - set(${VAR} "${${VAR}} -fexceptions") + string(REPLACE " -DQT_NO_EXCEPTIONS " " " ${VAR} " ${${VAR}} ") + # it's likely that -DQT_NO_EXCEPTIONS from CMAKE_CXX_FLAGS never made it to the COMPILE_OPTIONS + # so we override/undo that global setting for this file + set(${VAR} "${${VAR}} -fexceptions -UQT_NO_EXCEPTIONS") elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang") - set(${VAR} "${${VAR}} -fexceptions") + string(REPLACE " -DQT_NO_EXCEPTIONS " " " ${VAR} " ${${VAR}} ") + set(${VAR} "${${VAR}} -fexceptions -UQT_NO_EXCEPTIONS") endif() string(STRIP "${${VAR}}" ${VAR}) endmacro() @@ -311,10 +315,10 @@ if (WIN32) target_compile_options(${target} ${mode} "$<$:-EHsc>") else() - target_compile_options(${target} ${mode} "$<$:-fexceptions>") + target_compile_options(${target} ${mode} "$<$:-fexceptions;-UQT_NO_EXCEPTIONS>") endif() target_compile_options(${target} ${mode} - "$<$,$,$>:-fexceptions>") + "$<$,$,$>:-fexceptions;-UQT_NO_EXCEPTIONS>") endfunction() function(KDE_ENABLE_EXCEPTIONS)