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中是这样)。