我有一个包含多个目标的项目,每个目标都构建了一个非常相似的应用版本,但具有不同的图像资产和plists。对于plist / images来说没问题,但我使用的是ShareKit和Appirater框架,它们的头文件带有#defines用于配置。对于每个版本,我认为需要导入此头文件的不同版本,因为每个目标构建的每个应用程序的配置都不同。
所以目标A有SHConfig.h 目标B有一个不同的SHConfig.h
我可以编辑这些框架的源代码,以便根据目标导入不同的头文件,但是当我升级框架时,这会很混乱。
是否有更好的方法可以根据目标导入不同的头文件(具有相同的名称)?
答案 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 / ActivityIndicator.h)。
奇怪的是,另一个目标(我创建的第一个目标)很好而没有指定完整路径。即,
#import "ActivityIndicator.h"
找到$(SRCROOT)/../ Common / Views / v1 / ActivityIndicator.h
答案 2 :(得分:0)
下面的过程为我解决了这个问题
选择特定目标 在“构建阶段”->添加“新标题阶段”->展开“标题”->单击添加(加号),然后->浏览至要针对目标添加的文件。 (它将在“项目”部分下添加文件。)
针对其他目标重复该过程。 在Xcode 10.2上测试