如果您正在使用Appstore,需要“授权”,并且因此需要与Apple-Framework链接,那么还有另一种选择。
要使授权正常工作(例如GameCenter),您需要进行“链接二进制文件和库”构建步骤,然后链接“GameKit.framework”。CMake会在“低级别”上将库注入到命令行中,因此Xcode并不真正知道它,因此您将无法在功能屏幕中启用GameKit。
使用CMake并具有“链接二进制文件”构建步骤的一种方法是使用CMake生成xcodeproj,然后使用'sed'进行'搜索和替换',以按照XCode所需的方式添加GameKit...
该脚本看起来像这样(适用于Xcode 6.3.1)。
s
26B12AA11C10544700A9A2BA \/\* GameKit.framework in Frameworks \*\/ = {isa = PBXBuildFile
s
26B12AA01C10544700A9A2BA \/\* GameKit.framework xxx\*\/ = {isa = PBXFileReference
s
\
\/\* Begin PBXFrameworksBuildPhase section \*\/\
26B12A9F1C10543B00A9A2BA \/\* Frameworks \*\/ = {\
isa = PBXFrameworksBuildPhase
buildActionMask = 2147483647
files = (\
26B12AA11C10544700A9A2BA \/\* GameKit.framework in Frameworks xxx\*\/,\
)
runOnlyForDeploymentPostprocessing = 0
}
\/\* End PBXFrameworksBuildPhase section \*\/\
s
26B12A9F1C10543B00A9A2BA \/\* Frameworks xxx\*\/,
s
26B12AA01C10544700A9A2BA \/\* GameKit.framework xxx\*\/,
将此保存为“gamecenter.sed”,然后像这样“应用”它(它会更改您的xcodeproj!)
sed -i.pbxprojbak -f gamecenter.sed myproject.xcodeproj/project.pbxproj
您可能需要更改脚本命令以适应您的需求。
警告:随着项目格式的更改,(硬编码的)唯一编号可能不是真正的唯一编号,并且通常其他人提供的解决方案更好 - 因此,除非您需要支持Appstore +权限(和自动化构建),否则不要这样做,因为不同的Xcode版本可能会导致其崩溃。
这是一个CMake错误,请参见http://cmake.org/Bug/view.php?id=14185和http://gitlab.kitware.com/cmake/cmake/issues/14185
add_library(mylib SHARED IMPORTED)
,否则会出现add_library called with IMPORTED argument but no library type
错误。 - MarvinIMPORTED_LOCATION
后面,开括号写错了。 - Ela782IMPORTED
之后添加GLOBAL
。示例代码如下:add_library(breakpad STATIC IMPORTED GLOBAL)
。 - Roman Kruglov