2

在为 iOS 模拟器构建特定库时,我遇到了一系列链接器错误。问题的根源似乎是构建库的架构,在为 iOS 模拟器编译时似乎会导致问题。具体的库是 Aurasma 增强现实库。

我的问题是,有没有办法在为 iOS 模拟器编译代码时不编译库?尽管我确实有一些依赖于该库的代码,但我可以轻松地使用#ifdef 语句仅在不在 iOS 模拟器中时使用该代码。

我可以很容易地承认我可能不了解问题的全部根源。我尝试了一些使用 -weak_library 链接器标志的解决方案,但没有具体进展或成功。

4

3 回答 3

2

在 XCode 中,您可以为每个 iOS/模拟器 sdk 配置单独的库列表。以下是配置此的步骤:

  • 单击您的项目->目标->构建设置->链接->其他链接器标志
  • 在 Other Linker Flags 下为您的构建配置(例如 Debug)单击“+”。
  • 对于构建配置下的新条目,选择“Any iOS Simulator SDK”并删除您不想链接的库。
  • 您可以通过单击构建配置上的“+”按钮添加任意数量的条目,并为任何特定 sdk 配置所需的库。

相同的技术可以应用于 XCode 中针对目标的其他设置。

于 2013-06-17T20:11:54.347 回答
0

//:configuration = ReleaseForProfiling CODE_SIGN_IDENTITY = CODE_SIGN_IDENTITY[sdk=iphoneos*] = DEVELOPMENT_TEAM = PROVISIONING_PROFILE_SPECIFIER[sdk=iphonesimulator*] = PROVISIONING_PROFILE[sdk=iphonesimulator*] =

//:configuration = Release CODE_SIGN_IDENTITY = CODE_SIGN_IDENTITY[sdk=iphoneos*] = DEVELOPMENT_TEAM = PROVISIONING_PROFILE_SPECIFIER[sdk=iphonesimulator*] = PROVISIONING_PROFILE[sdk=iphonesimulator*] =

//:配置 = 调试 CODE_SIGN_IDENTITY = CODE_SIGN_IDENTITY[sdk=iphoneos*] = DEVELOPMENT_TEAM = PROVISIONING_PROFILE_SPECIFIER[sdk=iphonesimulator*] = PROVISIONING_PROFILE[sdk=iphonesimulator*] =

//:configuration = ReleaseForRunning CODE_SIGN_IDENTITY = CODE_SIGN_IDENTITY[sdk=iphoneos*] = DEVELOPMENT_TEAM = PROVISIONING_PROFILE_SPECIFIER[sdk=iphonesimulator*] = PROVISIONING_PROFILE[sdk=iphonesimulator*] =

//:completeSettings = some CODE_SIGN_ENTITLEMENTS CODE_SIGN_IDENTITY CODE_SIGN_STYLE DEVELOPMENT_TEAM OTHER_CODE_SIGN_FLAGS PROVISIONING_PROFILE_SPECIFIER PROVISIONING_PROFILE

于 2022-02-07T00:56:12.027 回答
0

我遇到了同样的问题,我所做的是将统一项目配置为编译为模拟器 SDK,然后在 Xcode 中我将目标>构建设置更改为编译为发布,如果我没记错的话,宾果游戏项目工作并且我有未签名ipa 文件。

于 2022-02-07T00:43:31.817 回答