首页 文章

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

提问于
浏览
1

如何为 gccclang 添加二进制剥离作为后处理步骤,但仅限于发布版本? MSVC 默认为条带,因此不必处理 .

其中一个问题是 clang 没有 -s 编译标志,但 gcc 确实so doing it this way不起作用 .

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

所以最后的选择是使用 strip 命令,除了二进制本身之外没有任何参数,这似乎是一个不错的通用解决方案 . 如何在 CMake 中使用它?

1 回答

  • 1

    CMake add_custom_command 中可以执行post构建命令,例如 strip . PROJECT_NAME 变量被定义为目标二进制文件,例如

    # Set the project name
    set(PROJECT_NAME "MyProject")
    project(${PROJECT_NAME})
    

    CMakeLists.txtadd_executable 之后放置以下代码:

    # 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 表示构建类型,如 DebugRelease . CMAKE_STRIP 是平台 strip 实用程序的文件路径(例如 Linux 上的 /usr/bin/strip ) .

相关问题