2
0
Эх сурвалжийг харах

CMake: Disable C++ exceptions everywhere that doesn't request them

Sam Edwards 7 жил өмнө
parent
commit
2c0b079dc9

+ 14 - 0
CMakeLists.txt

@@ -77,6 +77,20 @@ if(WIN32)
   add_definitions(-D_CRT_SECURE_NO_WARNINGS)
   add_definitions(-D_CRT_SECURE_NO_WARNINGS)
 endif()
 endif()
 
 
+# As long as we're figuring out compiler flags, figure out the flags for
+# turning C++ exception support on and off
+if(MSVC)
+  set(cxx_exceptions_on "/EHsc")
+  set(cxx_exceptions_off "/D_HAS_EXCEPTIONS=0")
+else()
+  set(cxx_exceptions_on "-fexceptions")
+  set(cxx_exceptions_off "-fno-exceptions")
+endif()
+set(cxx_exceptions_property "$<BOOL:$<TARGET_PROPERTY:CXX_EXCEPTIONS>>")
+add_compile_options(
+  "$<${cxx_exceptions_property}:${cxx_exceptions_on}>"
+  "$<$<NOT:${cxx_exceptions_property}>:${cxx_exceptions_off}>")
+
 # Include global modules needed for configure scripts
 # Include global modules needed for configure scripts
 include(PackageConfig)      # Defines package_option
 include(PackageConfig)      # Defines package_option
 
 

+ 1 - 0
panda/src/pnmimagetypes/CMakeLists.txt

@@ -34,6 +34,7 @@ composite_sources(p3pnmimagetypes P3PNMIMAGETYPES_SOURCES)
 add_component_library(p3pnmimagetypes SYMBOL BUILDING_PANDA_PNMIMAGETYPES
 add_component_library(p3pnmimagetypes SYMBOL BUILDING_PANDA_PNMIMAGETYPES
   ${P3PNMIMAGETYPES_HEADERS} ${P3PNMIMAGETYPES_SOURCES})
   ${P3PNMIMAGETYPES_HEADERS} ${P3PNMIMAGETYPES_SOURCES})
 target_link_libraries(p3pnmimagetypes p3pnmimage PKG::JPEG PKG::TIFF PKG::PNG)
 target_link_libraries(p3pnmimagetypes p3pnmimage PKG::JPEG PKG::TIFF PKG::PNG)
+set_target_properties(p3pnmimagetypes PROPERTIES CXX_EXCEPTIONS ON)
 
 
 if(NOT BUILD_METALIBS)
 if(NOT BUILD_METALIBS)
   install(TARGETS p3pnmimagetypes DESTINATION lib RUNTIME DESTINATION bin)
   install(TARGETS p3pnmimagetypes DESTINATION lib RUNTIME DESTINATION bin)