在为 iOS 模拟器构建时如何强制 Xcode 编译器忽略库

问题描述 投票:0回答:3

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

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

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

xcode aurasma
3个回答
3
投票

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

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

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


0
投票

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


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*] = 

//:configuration = Debug
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
© www.soinside.com 2019 - 2024. All rights reserved.