# ios_post_project.cmake - Runs after all CMakeLists.txt are processed # Helper: Strip -Werror from a target function(strip_werror target) if(NOT TARGET ${target}) return() endif() get_target_property(type ${target} TYPE) if(NOT type OR type STREQUAL "INTERFACE_LIBRARY") return() endif() # Remove from compile options get_target_property(opts ${target} COMPILE_OPTIONS) if(opts) list(REMOVE_ITEM opts -Werror) set_target_properties(${target} PROPERTIES COMPILE_OPTIONS "${opts}") endif() # Remove from compile flags (legacy) get_target_property(flags ${target} COMPILE_FLAGS) if(flags) string(REGEX REPLACE "-Werror(=[^ ]*)? ?" "" flags "${flags}") set_target_properties(${target} PROPERTIES COMPILE_FLAGS "${flags}") endif() # Force Xcode attributes (overrides everything) set_target_properties(${target} PROPERTIES XCODE_ATTRIBUTE_GCC_TREAT_WARNINGS_AS_ERRORS "NO" XCODE_ATTRIBUTE_SWIFT_TREAT_WARNINGS_AS_ERRORS "NO" ) endfunction() # Strip from ALL targets recursively function(strip_werror_all) # Get all directories get_property(dirs DIRECTORY ${CMAKE_SOURCE_DIR} PROPERTY SUBDIRECTORIES) list(APPEND dirs ${CMAKE_SOURCE_DIR}) foreach(dir ${dirs}) get_property(targets DIRECTORY ${dir} PROPERTY BUILDSYSTEM_TARGETS) foreach(target ${targets}) strip_werror(${target}) endforeach() endforeach() endfunction() # Schedule to run at the VERY END of configuration cmake_language(DEFER DIRECTORY ${CMAKE_SOURCE_DIR} CALL strip_werror_all)