Xcode - 根据Target导入具有相同名称的不同头文件

时间:2011-02-01 22:31:53

标签: iphone xcode macos ios header-files

我有一个包含多个目标的项目,每个目标都构建了一个非常相似的应用版本,但具有不同的图像资产和plists。对于plist / images来说没问题,但我使用的是ShareKit和Appirater框架,它们的头文件带有#defines用于配置。对于每个版本,我认为需要导入此头文件的不同版本,因为每个目标构建的每个应用程序的配置都不同。

所以目标A有SHConfig.h 目标B有一个不同的SHConfig.h

我可以编辑这些框架的源代码,以便根据目标导入不同的头文件,但是当我升级框架时,这会很混乱。

是否有更好的方法可以根据目标导入不同的头文件(具有相同的名称)?

3 个答案:

答案 0 :(得分:5)

假设它们位于不同的目录中,请在每个目标中设置标题搜索路径,以便将正确的目录放在第一位。

您可能希望将其设置为$(SRCROOT)/foo:$(HEADER_SEARCH_PATHS),但我不确定是否有必要。

答案 1 :(得分:0)

我发现有用的是将Common目录名放在头搜索路径中,然后使用另一个#import。我的目录结构是Common / Views / v1和Common / Views / v2。我想要一个目标的v1和另一个目标的v2。

就我而言,我在标题搜索路径中使用的搜索路径是:

$(SRCROOT)/../Common/

然后,我用了:

#import <Views/v2/ActivityIndicator.h>

在需要第二个版本的目标中(找到$(SRCROOT)/../ Common / Views / v2 / ActivityIndi​​cator.h)。

奇怪的是,另一个目标(我创建的第一个目标)很好而没有指定完整路径。即,

#import "ActivityIndicator.h"

找到$(SRCROOT)/../ Common / Views / v1 / ActivityIndi​​cator.h

答案 2 :(得分:0)

下面的过程为我解决了这个问题

选择特定目标 在“构建阶段”->添加“新标题阶段”->展开“标题”->单击添加(加号),然后->浏览至要针对目标添加的文件。 (它将在“项目”部分下添加文件。)

针对其他目标重复该过程。 在Xcode 10.2上测试