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

问题描述 投票:0回答:1

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

c++ cmake codesign
1个回答
0
投票

感谢@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)
© www.soinside.com 2019 - 2024. All rights reserved.