如何在 CMake 中执行安装后操作?

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

我有一个使用 CMake 构建的简单 C++ 应用程序。通过执行以下操作,可以允许在崩溃时转储核心:

 add_custom_command(TARGET target 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:target>
    COMMAND rm -f coredump.entitlements
    VERBATIM)

这适用于构建的程序(例如,以

./build/bin/target
运行),但在
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.