Files
c_cpp_boilerplate/cmake/StripAllTargets.cmake

30 lines
1.1 KiB
CMake

# More at: https://www.technovelty.org/linux/stripping-shared-libraries.html
function(_get_all_cmake_targets out_var current_dir)
get_property(targets DIRECTORY ${current_dir} PROPERTY BUILDSYSTEM_TARGETS)
get_property(subdirs DIRECTORY ${current_dir} PROPERTY SUBDIRECTORIES)
foreach(subdir ${subdirs})
_get_all_cmake_targets(subdir_targets ${subdir})
list(APPEND targets ${subdir_targets})
endforeach()
set(${out_var} ${targets} PARENT_SCOPE)
endfunction()
_get_all_cmake_targets(all_targets ${PROJECT_SOURCE_DIR})
add_custom_target(strip_all ALL COMMENT "Stripping symbols from all executables and shared libraries")
foreach(target ${all_targets})
message(VERBOSE "[STRIP] Adding target: ${target}")
get_target_property(target_type ${target} TYPE)
if(target_type STREQUAL "EXECUTABLE" OR target_type STREQUAL "SHARED_LIBRARY" OR target_type STREQUAL "MODULE_LIBRARY")
add_custom_command(
TARGET strip_all
POST_BUILD
COMMAND ${CMAKE_STRIP} --strip-all $<TARGET_FILE:${target}>
COMMENT "Stripping symbols from ${target}")
endif()
endforeach()