我有一个使用 CMake 构建的简单 C++ 应用程序。在 macOS 中,可以通过执行以下操作来在崩溃时转储核心:
add_custom_command(TARGET mytarget POST_BUILD
COMMAND /usr/libexec/PlistBuddy -c "Add :com.apple.security.get-task-allow bool true" coredump.entitlements
COMMAND codesign -s - -f --entitlements coredump.entitlements $<TARGET_FILE:mytarget>
COMMAND rm -f coredump.entitlements
VERBATIM)
这适用于构建的程序(例如,以
./build/bin/mytarget
运行),但在make install
之后,安装的程序无法启动,错误:Killed: 9
如何在 CMake 安装后再次执行协同设计步骤,或者通过
make install
使初始签名持久化?
感谢@Osyotr 为我指明了正确的方向。我最终得到以下结果:
set(ENTITLEMENTS "${CMAKE_CURRENT_SOURCE_DIR}/src/mytarget.entitlements")
install(CODE "execute_process(COMMAND
codesign -s - -f --entitlements \"${ENTITLEMENTS}\" \"${CMAKE_INSTALL_PREFIX}/bin/mytarget\"
)" COMPONENT Runtime)