另一种选择,如果您正在使用 Appstore,则需要“权利”,因此需要与 Apple 框架链接。
要使授权正常工作(例如 GameCenter),您需要具有“将二进制文件与库链接”-构建步骤,然后与“GameKit.framework”链接。 CMake 将“低级别”的库“注入”到命令行中,因此 Xcode 并不真正了解它,因此您将不启用 GameKit功能屏幕。
使用 CMake 并拥有“与二进制文件链接”的一种方法是使用 CMake 生成 xcodeproj,然后使用“sed”来“搜索和替换”并以 XCode 喜欢的方式添加 GameKit。 .
脚本如下所示(对于 Xcode 6.3.1)。
s#\/\* Begin PBXBuildFile section \*\/#\/\* Begin PBXBuildFile section \*\/\
26B12AA11C10544700A9A2BA \/\* GameKit.framework in Frameworks \*\/ = {isa = PBXBuildFile; fileRef = 26B12AA01C10544700A9A2BA \/\* GameKit.framework xxx\*\/; };#g
s#\/\* Begin PBXFileReference section \*\/#\/\* Begin PBXFileReference section \*\/\
26B12AA01C10544700A9A2BA \/\* GameKit.framework xxx\*\/ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GameKit.framework; path = System\/Library\/Frameworks\/GameKit.framework; sourceTree = SDKROOT; };#g
s#\/\* End PBXFileReference section \*\/#\/\* End PBXFileReference section \*\/\
\
\/\* Begin PBXFrameworksBuildPhase section \*\/\
26B12A9F1C10543B00A9A2BA \/\* Frameworks \*\/ = {\
isa = PBXFrameworksBuildPhase;\
buildActionMask = 2147483647;\
files = (\
26B12AA11C10544700A9A2BA \/\* GameKit.framework in Frameworks xxx\*\/,\
);\
runOnlyForDeploymentPostprocessing = 0;\
};\
\/\* End PBXFrameworksBuildPhase section \*\/\
#g
s#\/\* CMake PostBuild Rules \*\/,#\/\* CMake PostBuild Rules \*\/,\
26B12A9F1C10543B00A9A2BA \/\* Frameworks xxx\*\/,#g
s#\/\* Products \*\/,#\/\* Products \*\/,\
26B12AA01C10544700A9A2BA \/\* GameKit.framework xxx\*\/,#g
将它保存到“gamecenter.sed”,然后像这样“应用”它(它会改变你的 xcodeproj!)
sed -i.pbxprojbak -f gamecenter.sed myproject.xcodeproj/project.pbxproj
您可能需要更改脚本命令以满足您的需要。
警告:由于项目格式可能发生变化,可能会因不同的 Xcode 版本而中断,(硬编码的)唯一编号可能并不是真正唯一的——通常其他人的解决方案更好——所以除非你需要支持Appstore + Entitlements(和自动构建),不要这样做。
这是一个 CMake 错误,请参阅 http://cmake.org/Bug/view.php?id=14185 和 http://gitlab.kitware.com/cmake/cmake/issues/14185