如何将CMake
和gcc
的二进制剥离添加到clang
,作为后处理步骤,但仅在发行版中? MSVC
默认剥离,因此不必处理。
问题之一是clang
没有-s
编译标志,但是gcc
却没有so doing it this way。
另一个想法是使用strip命令。 -s
开关再次存在于Linux
上,但不存在于XCode
上(这是Apple
的开发工具链)。
因此,最后的选择是使用strip
命令,除了二进制本身(这似乎是一个不错的通用解决方案)之外,不带任何其他参数。如何在CMake
中使用它?
答案 0 :(得分:3)
在CMake
中,add_custom_command
可以执行诸如strip
之类的构建后命令。 PROJECT_NAME
变量定义为目标二进制文件,例如
# Set the project name
set(PROJECT_NAME "MyProject")
project(${PROJECT_NAME})
将以下代码放在add_executable
的{{1}}之后:
CMakeLists.txt
# Strip binary for release builds
if (CMAKE_BUILD_TYPE STREQUAL Release)
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
COMMAND ${CMAKE_STRIP} ${PROJECT_NAME})
endif ()
指示构建类型,例如CMAKE_BUILD_TYPE
或Debug
。 Release
是平台CMAKE_STRIP
实用程序的文件路径(例如strip
上的/usr/bin/strip
)。