Swift:多个目标处理:宏不起作用

时间:2017-08-03 12:50:06

标签: ios xcode macros targets

来自参考How to handle multiple targets in XCode using swift language?https://www.appcoda.com/using-xcode-targets/

我创建了三个目标,每个目标都有不同的捆绑ID和应用程序图标。我还在“其他快速标志”中添加了不同的标志 - >自定义快速标志部分

喜欢

对于第一个目标,我添加了“ - DGOLD”, 对于第二个目标,我添加了“ - DSILVER”和for 第三个目标我添加了“ - DPLATINUM”

在AppDelegate中我写了一段代码

#if GOLD
print ("Gold")
#elseif SILVER
print ("Silver")
#else
print ("Platinum")
#endif

仅供参考,I am using Xcode 8.3

我试图运行第一个目标,我总是得到“白金”。请告诉我如何正确地获得旗帜

2 个答案:

答案 0 :(得分:5)

对于Xcode 8及更高版本,请在Build settings / Swift compiler - Custom flags中使用 Active Compilation Conditions 设置。

这是用于将条件编译标志传递给Swift编译器的新构建设置。 只需添加这样的标记:GOLDSILVER等,不带-D等。 然后使用如下编译条件进行检查:

#if GOLD
//
#elseif SILVER
//
#else
//
#endif

答案 1 :(得分:1)

我正在使用Xcode 9。 我遇到了同样的问题,寻找了几个小时的答案,终于找到了解决方案。 在每个目标的“构建设置”->“其他Swift标志”中,我都添加了想要的标志,如下所示:

Target1-> -DTARGET1

Target2-> -DTARGET2

然后在我的代码中使用:

#if TARGET1
//
#elseif TARGET2
//
#endif