另一种选择是,如果您正在使用 Appstore,则需要“Entitlements”,因此需要链接到 Apple-Framework。
要使权利 (例如 GameCenter) 发挥作用,您 需要 有一个“将二进制文件与库链接”-buildstep,然后链接到“GameKit.framework”。CMake 将“低级”上的库“注入”到命令行中,因此 Xcode 对此并不 了解 ,因此您无法 在 功能屏幕中启用 GameKit。
使用 CMake 并拥有“链接二进制文件”-buildstep 的一种方法是使用 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\',然后像这样\'apply\'它(它会改变你的xcodeproj!)
sed -i.pbxprojbak -f gamecenter.sed myproject.xcodeproj/project.pbxproj
您可能需要更改脚本命令以满足您的需要。
警告:由于项目格式可能会发生变化,因此它可能会因不同的 Xcode 版本而中断,(硬编码的)唯一编号可能并不是真正唯一的 - 并且通常其他人的解决方案更好 - 所以除非您需要支持 Appstore + 权利(和自动构建),否则不要这样做。
这是一个 CMake 错误,请参阅 http://cmake.org/Bug/view.php?id=14185 和 http://gitlab.kitware.com/cmake/cmake/issues/14185