在为iOS模拟器构建时,使Xcode忽略静态库

Tho*_*sen 8 xcode objective-c ios

我有一个Xcode项目,其中包括一个静态库项目,该项目使用另一个不支持iOS模拟器体系结构的静态库(Vuforia SDK:libQCAR.a).

Vuforia SDK文档说明:

必须将Vuforia应用程序部署到设备才能运行; 它们无法在iOS模拟器中运行.

这是我的项目结构:

  • MyApp.xcodeproj
    • MyStaticLibrary.xcodeproj
      • 依赖于libQCAR.a的类
    • 构架
      • libMyStaticLibrary.a
      • libQCAR.a

我的问题是MyApp.xcodeproj没有为iOS模拟器构建,因为libQCAR.a它不是为i386架构而构建的.

反正在为i386构建时是否MyApp.xcodeproj忽略了libQCAR.a库?我将能够禁用所有依赖于库的代码#if !(TARGET_IPHONE_SIMULATOR)

ser*_*gio 5

您可以使用条件构建设置来指定仅在给定平台上链接的库,而不是以常规方式将库添加到项目中.具体来说,您需要指定:

 -lQCAR
Run Code Online (Sandbox Code Playgroud)

在"其他链接标志"中.

看一下应该让事情更清晰的附加图像(在图片中我只为模拟器链接,你想要选择一个设备,我猜).

另外,不要忘记将包含库的目录的路径添加到"Library Search Path"构建设置(这不需要是有条件的;它不会对模拟器造成任何伤害).

在此输入图像描述


小智 3

这个问题看起来非常类似于:Xcode:基于架构的条件构建设置(设备(ARM)与模拟器(i386))

我相信 Sergio 的解决方案非常接近,但是您是否尝试过在“其他链接器标志”下指定库的完整路径(可能没有“-l” - 只是路径)?