我对此设置感到困惑(项目 - >编辑活动目标)。 搜索路径可能因SDK设置(模拟器与设备)而异。
但是,如果我提供模拟器和设备路径,让我们说框架路径,那么我会得到链接器错误。但似乎我只为我选择的任何一个SDK提供了正确的路径,那么它构建得很好!
如何保留两种路径设置?目前我不得不根据我选择构建的SDK来剪切和粘贴适当的路径。
谢谢!
答案 0 :(得分:7)
您在谈论哪种搜索路径?系统搜索路径会自动为您处理,因此我认为您的问题是一些自定义库。
有两种解决方案。您可以使用条件设置,也可以使用通用库。我已经成长为热爱通用图书馆,但尚未有时间编写完整的指令。它们的工作方式是为模拟器和设备构建静态库,然后使用lipo
将它们粘合在一起。然后,您可以为两个平台使用相同的库。我真的需要为此写出完整的说明,因为它非常有用。
还有两种方法。首先,您可以使用条件设置。在xcconfig文件中(请参阅my talk有关使用xcconfig文件的原因),你可以这样写:
LD_FLAGS[sdk=iphonesimulator*] = -lsasl2
仅为模拟器链接sasl2。设置你需要的任何标志。另一个解决方案是变量替换:
HEADER_SEARCH_PATHS = "$(SRCROOT)/MyPackage/build/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/include"
这假设MyPackage
位于项目的子目录中,并且内置于build
目录中。例如,它会查看Debug-iphoneos
的变量。
您也可以在构建窗格中执行上述两项操作,但我真的建议人们从构建窗格中删除任何严肃的项目。变量替换在构建窗格中的工作方式相同,右键单击设置即可访问条件设置。
答案 1 :(得分:1)
您应该设置两个单独的构建目标配置文件,一个用于SIM,一个用于设备,而不是不断编辑同一个。这就是目标的重点。
答案 2 :(得分:1)
如果您只使用
然后您的页眉搜索路径应为空。 Xcode自动为项目头文件,SDK框架和/usr/include/*.h提供搜索路径,并针对正在使用的框架调整这些路径。
拥有自定义标头搜索路径的唯一理由是,当您引用不在SDK中的标头时,位于SDK中的“深”位置(例如在/ usr / include的子目录中或在隐藏框架中) ,或者在项目交叉引用的其他目标或项目中。
答案 3 :(得分:1)
在构建设置窗口中,选择要修改的设置(例如“框架搜索路径”)。然后单击左下方的齿轮,选择“添加构建设置条件”。然后,您可以添加仅适用于iOS模拟器构建的值,以及仅应用于设备构建的第二个构建设置条件。