CMake:用于发行版本的独立于平台的二进制剥离

时间:2018-12-09 12:35:16

标签: c++ cmake strip

如何将CMakegcc的二进制剥离添加到clang,作为后处理步骤,但仅在发行版中? MSVC默认剥离,因此不必处理。

问题之一是clang没有-s编译标志,但是gcc却没有so doing it this way

另一个想法是使用strip命令。 -s开关再次存在于Linux上,但不存在于XCode上(这是Apple的开发工具链)。

因此,最后的选择是使用strip命令,除了二进制本身(这似乎是一个不错的通用解决方案)之外,不带任何其他参数。如何在CMake中使用它?

1 个答案:

答案 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_TYPEDebugRelease是平台CMAKE_STRIP实用程序的文件路径(例如strip上的/usr/bin/strip)。