如何在CMake中执行安装后的协同设计?

gpnt7bae  于 10个月前  发布在  其他
关注(0)|答案(1)|浏览(121)

我有一个使用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使初始签名持久化?

qv7cva1a

qv7cva1a1#

感谢@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)

字符串

相关问题