使用 CMake 和 PackageMaker CPack 生成器在 MacOS 上签署可执行文件

Bel*_*oly 5 macos cmake codesign cpack

我使用 CMake

add_custom_command(TARGET POST_BUILD COMMAND codesign ...)
Run Code Online (Sandbox Code Playgroud)

用于在构建时签署可执行文件。

它工作正常,但是当 CPack 生成包时,它会在可执行文件上重写 rpath 并在它们上调用 strip 命令。这会更改文件并使签名无效。在 CPack 完成安装之后和实际打包之前,CMake 有没有办法对二进制文件进行签名?

Ale*_*x M 0

您应该能够单独在 cmake 中进行签名和剥离。但如果您确实希望删除符号(例如 ),您还需要将 添加--strip到 cmake 安装步骤中cmake --install . --strip

add_executable(my_bundle_exe MACOSX_BUNDLE ${SRCS})

set_target_properties(my_bundle_exe PROPERTIES
  XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "${MY_CODE_SIGN_IDENTITY}"
  XCODE_ATTRIBUTE_CODE_SIGN_ENTITLEMENTS my.entitlements
  XCODE_ATTRIBUTE_PRODUCT_NAME "My Product"
  XCODE_ATTRIBUTE_DEVELOPMENT_TEAM ${DEVELOPMENT_TEAM_ID}
  XCODE_ATTRIBUTE_PROVISIONING_PROFILE_SPECIFIER my_profile_name
  XCODE_ATTRIBUTE_DEPLOYMENT_POSTPROCESSING YES   # this is needed for strip symbols
)
Run Code Online (Sandbox Code Playgroud)