【问题标题】:Sign executable files on MacOS using CMake and PackageMaker CPack generator使用 CMake 和 PackageMaker CPack 生成器在 MacOS 上签署可执行文件
【发布时间】:2018-10-19 14:37:21
【问题描述】:
我使用 CMake
add_custom_command(TARGET POST_BUILD COMMAND codesign ...)
用于在构建时签署可执行文件。
它工作正常,但是当 CPack 生成包时,它会在可执行文件上重写 rpath 并在它们上调用 strip 命令。这会更改文件并使签名无效。在 CPack 完成安装后和实际打包之前,CMake 中有什么方法可以对二进制文件进行签名吗?
【问题讨论】:
标签:
macos
cmake
codesign
cpack
【解决方案1】:
您应该能够单独在 cmake 中签名和剥离。但是,如果您确实想要去除符号(例如 cmake --install . --strip),您还需要将 --strip 添加到 cmake 安装步骤。
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
)