2009-09-24 89 views
2

我对此设置感到困惑(项目 - >编辑活动目标)。 根据SDK设置(模拟器vs设备),搜索路径可能会有所不同。设备vs模拟器的iPhone xcode搜索路径?

但是,如果我提供模拟器和设备路径,让我们说框架路径,然后我得到链接器错误。但是,如果我只为我选择的任何SDK提供正确的路径,那么它看起来很好!

如何保持两个路径设置?目前,我必须剪切和粘贴基于我选择构建的SDK的相应路径。

谢谢!

回答

1

您应该设置两个单独的构建目标配置文件,一个用于sim和一个用于设备,而不是不断编辑同一个配置文件。这就是目标。

+1

这不是目标的重点。这是不同平台的相同目标。目标是“测试应用程序”与“主应用程序”与“磁盘映像”之类的内容。为单个目标切换平台并不是一种好方法。 – 2009-09-24 23:49:25

+0

好吧,我没有使用自定义框架。除了标准的sqlite3库之外,我正在使用标准框架。 因此......如果我不应该为每个平台使用单独的目标,我该如何解决我的框架/ lib路径问题?我有一个目标。如果我想为模拟器构建,请从下拉列表中选择Simulator 3.0。同样,我选择Device 3.0作为设备。 – AlvinfromDiaspar 2009-09-25 01:23:56

6

你在说什么样的搜索路径?系统搜索路径会自动为您处理,因此我认为您的问题是一些自定义库。

有两个解决方案。您可以使用条件设置,也可以使用通用库。我已经开始热爱通用图书馆,但还没有时间写出完整的说明。他们的工作方式是为模拟器和设备建立静态库,然后使用lipo将它们粘合在一起。然后,您可以在两个平台上使用相同的库。我真的需要写出完整的说明,因为它非常有用。

还有两种方法。首先,您可以使用条件设置。在xcconfig文件(见为什么要使用xcconfig文件my talk),你把这样的事情:

LD_FLAGS[sdk=iphonesimulator*] = -lsasl2 

这只是为模拟器连接SASL2。设置你所需要的标志。另一种方法是变量代换:

HEADER_SEARCH_PATHS = "$(SRCROOT)/MyPackage/build/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/include" 

这假定MyPackage是在项目的一个子目录,它被内置到build目录。它会查找,例如,其变量为Debug-iphoneos

您也可以在构建窗格中同时执行上述两项操作,但我真的建议人们远离任何严重项目的构建窗格。变量替换在构建窗格中的作用相同,并且可以通过右键单击设置来访问条件设置。

1

如果你只使用

  • 项目头
  • SDK框架头
  • sqlite3的头

那么你的头搜索路径应该是。 Xcode自动为您的项目头文件,SDK框架和/usr/include/*.h提供搜索路径,并调整正在使用的框架的搜索路径。

拥有自定义标题搜索路径的唯一原因是,当您引用的标题不在SDK中,位于SDK中的“深层”位置时(例如在/ usr/include的子目录中或在掩埋框架中),或者在您的项目交叉引用的其他目标或项目中。

1

Rob已经暗示了这一点,但要澄清,这里是你如何使用构建窗口来设置它。

在构建设置窗口中,选择要修改的设置(如“框架搜索路径”)。然后点击左下角的齿轮,然后选择“添加生成设置条件”。然后,您可以添加一个仅适用于iOS Simulator版本的值,另一个版本设置条件仅适用于设备版本。