noa*_*mtm 25 compiler-construction iphone xcode linker build
我正在构建一个必须在模拟器和设备上运行的iPhone应用程序.但是我正在使用一个外部编译的库,它有一个版本用于模拟器,一个用于设备(不同的CPU).
我该怎么做?我来自Visual C++所以我是Xcode的新手,我找不到这样做的方法.
编辑,2016年3月:这个问题是在大约6年前的2009年7月问的.Xcode已经发生了很大的变化,但我猜有些东西仍然存在.例如,现在接受的答案不是Xcode v3中的一个选项.
clo*_*ach 29
我在集成Adobe Omniture的"AppMeasurement"库时遇到了这个问题,该库目前为3种架构编译:libAppMeasurement-iOSSimulator.a,libAppMeasurement-iOSDevice.a和libAppMeasurement-iOSDevice-armv7.a.
虽然这里的其他答案基本上是正确的,但我最终不得不到其他地方去真正了解并解决问题.
步骤1.了解问题
这篇博文很好地解释了整个问题.它为解决Xcode 3中的问题提供了从头到尾的说明.请参阅下面的Xcode 4.
注意:您可以尝试跳过他所说的添加静态库然后删除它们的位.下次我这样做时,我可能只是添加头文件,然后直接跳过编辑其他链接器标志.
步骤2. Xcode 4中的条件构建设置
这个StackOverflow页面解释了在Xcode 4中设置条件构建设置的新方法.提示: Build Settings选项卡上的文本字段是拖放功能; 一旦准备好在其他链接器标志下编辑条件构建设置,就可以将静态库文件直接拖到文本字段上,Xcode将自动进入(希望是相对的)路径.
这是我的其他链接器标志的屏幕截图,一旦我得到"缺少必需的架构i386"警告就消失了,没有构建错误:
__
你有3个选择:
如果您控制单击Inspect窗口中的构建设置名称(您可以在其中更改编译器设置等),它将带来一个条件化该设置的选项.只需转到要更改的链接器标志,然后通过SDK对它们进行条件化,然后输入每个SDK的特定库.
或者,您可以使用库并在每个SDK根目录中的相同路径上安装它("/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.0.sdk/usr/lib/"和"/ Developer/Platforms /" iPhoneSimulator.platform /开发商/软件开发工具包/ iPhoneSimulator3.0.sdk/usr/lib目录").由于使用了SDK相对库搜索路径,因此将为任一构建引入适当的版本.
您可以将两个库组合成一个胖库.这可能是一个坏主意,但如果你想这样做,请查看联机帮助页.
小智 5
对于有人遇到警告,例如"[lib_for_sim_or_device]不是为架构而构建的......",在将第三方库文件夹拖入项目时会出现警告.
在场景背后,XCode会自动将库文件添加到"目标设置 - >构建短语 - >链接二进制文件和库"部分,从而导致与两个库的链接.
要解决此问题,请从"Link Binary with Libraries"中删除这些条目,然后按照上面有关sim/device的条件构建设置的指南进行操作
希望能帮助到你!
| 归档时间: |
|
| 查看次数: |
15789 次 |
| 最近记录: |