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

CMake Xcode生成器-添加功能“;强化运行时“;,xcode,macos,cmake,Xcode,Macos,Cmake,问题很简单。我有一个多平台项目(Windows/macos) 现在,如果是macos,我需要在包的功能部分启用“强化运行时”(它是launchd守护进程) 我希望我的Xcode项目是由cmake生成的(我不想维护多个项目文件)。 如果我可以通过修改构建过程(例如通过向xcodebuidl命令添加一些标志)来克服这个问题,那应该没问题,但我更喜欢在CMakeLists.txt文件中定义所有内容 您可以使用属性XCODE\u属性\u ENABLE\u harded\u RUNTIME,它是一个布尔值

问题很简单。我有一个多平台项目(
Windows
/
macos

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

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


您可以使用属性
XCODE\u属性\u ENABLE\u harded\u RUNTIME
,它是一个布尔值

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

set_property(TARGET target XCODE_ATTRIBUTE_ENABLE_HARDENED_RUNTIME YES)
或者,如果为目标提供了更多属性,则可能如下所示:

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
)

美好的谢谢我在这方面做了很好的改进。这是不是有文档记录的地方<代码>启用\u运行时是Xcode项目属性。您可以从项目的“构建设置”页面中看到这一点。选择任何项目属性,并在“快速帮助”窗格中检查“声明”部分<代码>XCODE\u属性>谢谢。我喜欢全貌。这真的很有帮助。@TheNextman我认为您的第二个示例中有一个错误(至少对于xcode 11)。对XCODE\u属性启用\u加固\u运行时使用TRUE实际上会在XCODE项目中生成NO。为属性设置的正确值是YES(同样,至少在xcode 11中是这样)。