30 lines
1.1 KiB
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()
|