CMake Xcode 生成器 - 添加功能“强化运行时”

Mar*_*k R 4 macos xcode cmake

问题很简单。我有多平台项目(Windows/ Mac OS)。

现在,如果Mac OS我需要在我的包(它是 launchd 守护进程)的功能部分启用“强化运行时”。

我希望我的 Xcode 项目是由cmake(我不想维护多个项目文件)生成的。如果我可以通过修改构建过程(例如通过向xcodebuidl命令添加一些标志)来克服这个问题,那应该没问题,但我更喜欢在CMakeLists.txt文件中定义所有内容。

Xcode 项目功能视图

The*_*man 8

您可以使用属性XCODE_ATTRIBUTE_ENABLE_HARDENED_RUNTIME,它是一个布尔值。

在您的 macOS 目标上设置该属性,例如

set_property(TARGET target PROPERTY XCODE_ATTRIBUTE_ENABLE_HARDENED_RUNTIME YES)
Run Code Online (Sandbox Code Playgroud)

或者,如果您为目标提供更多属性,它可能如下所示:

set_target_properties(target PROPERTIES
    MACOSX_BUNDLE TRUE
    MACOSX_BUNDLE_BUNDLE_NAME "yourTargetName"
    MACOSX_RPATH TRUE
    MACOSX_FRAMEWORK_IDENTIFIER com.host.target
    XCODE_ATTRIBUTE_LD_RUNPATH_SEARCH_PATHS "@loader_path/Libraries"
    RESOURCE "${RESOURCE_FILES}"
    XCODE_ATTRIBUTE_ENABLE_HARDENED_RUNTIME YES
)
Run Code Online (Sandbox Code Playgroud)

  • `ENABLE_HARDENED_RUNTIME` 是 Xcode 项目属性。您可以从项目的“构建设置”页面看到这一点。选择任何项目属性并在“快速帮助”窗格中检查“声明”部分。`XCODE_ATTRIBUTE_<an-attribute>` 是用于设置 Xcode 属性的 cmake 语法。见 https://cmake.org/cmake/help/v3.1/prop_tgt/XCODE_ATTRIBUTE_an-attribute.html#prop_tgt:XCODE_ATTRIBUTE_<an-attribute> (2认同)