我写了一个跨平台的游戏创建库,它可以用CMake作为框架编译成一个静态/共享库。我不需要帮助来构建iOS应用程序本身,而是完全新的苹果开发者帐户,应用程序ID,签名等。
以下是我初步想出的步骤:
1.框架的CMake文件需要设置目标属性FRAMEWORK
和MACOSX_FRAMEWORK_IDENTIFIER
。
1.用户需要为自己的项目创建一个CMakeLists.txt文件。它必须包含MACOSX_BUNDLE_GUI_IDENTIFIER
,MACOSX_BUNDLE_BUNDLE_VERSION
和MACOSX_BUNDLE_SHORT_VERSION_STRING
。
我对开发者账号有点困惑。第三方库需要关联开发者账号吗?对于MACOSX_FRAMEWORK_IDENTIFIER
,我可以指定任何我喜欢的字符串,还是需要在Apple注册App ID?例如,第三方库名为Cute Framework,对于标识符,我可以简单地创建一个像"com.cute_framework.${CF_VERSION}"
这样的字符串吗?我应该在这里附加一个版本号吗?我可以在框架中使用“iPhone Developer”吗?
对于#2,用户需要自己的开发者帐户,并且可以自己填写MACOSX_BUNDLE_***
字段。这是否允许XCode自动计算如何使用用户证书签署用户应用和库?如果库是共享库,情况如何?代码签名如何工作?
我是否错过了任何主要的CMake步骤?总的来说,我对开发人员帐户/证书如何Map到相关的CMake命令以及第三方分布式框架和实际iOS应用之间的CMake差异感到困惑。
1条答案
按热度按时间pbgvytdp1#
框架的Bundle ID只是一个唯一的字符串标识符,不与任何特定的开发者帐户绑定。用户的开发者帐户有一个唯一的团队ID(下面将详细介绍)。Xcode可以由用户自动配置,为框架和用户的应用程序设置代码签名。
对于库/框架本身,在为Apple设备构建时,应该设置目标属性
FRAMEWORK
。您还应该指定框架版本和标识符(FRAMEWORK_VERSION
和MACOSX_FRAMEWORK_IDENTIFIER
)。后者被Apple用来唯一标识框架本身。当用户针对您的库进行编译时,XCode会将用户的Apple Team ID附加到框架上。的ID来自动对框架进行签名。注意--标识符中不能有任何下划线。
对于用户的CMake脚本,他们可以使用
MACOSX_BUNDLE_GUI_IDENTIFIER
,MACOSX_BUNDLE_BUNDLE_VERSION
和MACOSX_BUNDLE_SHORT_VERSION_STRING
为MacOS/iOS设置自己的目标属性。在初始配置CMake时,用户需要为iOS版本指定一些设置。一些很好的示例命令行can be seen here。例如,要在名为
build
的文件夹中为模拟器构建,用户可以用途:或iPhone/iPad:
CMAKE_XCODE_ATTRIBUTE_DEVELOPMENT_TEAM
来自用户的Apple开发者帐户,可以通过developer.apple.com找到。它是开发者的团队ID。如果用户将其开发者帐户添加到Xcode,Xcode可以在构建过程中自动设置代码签名。相同的过程可用于为库/框架构建任何示例应用,其中用户可通过
CMAKE_XCODE_ATTRIBUTE_DEVELOPMENT_TEAM
提供其团队ID,以构建和签署沿着库/框架构建的任何示例应用。