我在项目目标TEST=1
的{{1}}部分添加了Preprocessor Macros
,每当我在代码中使用它时,预处理器都认为它没有定义
例如,拥有:
Build Settings
有这种行为:
#if TEST
// a
#else
// b
#endif
// b
这是因为预处理器无法找到// b
(即使它被定义为TEST
,正如我之前所说的那样)所以它将其视为{{1} }。
有没有办法解决这些问题?
修改
我的用例与多个项目目标有关。因此,假设初始目标名为1
,其false
预处理器宏定义为值First
。
如果我创建另一个名为TEST
的项目目标,但没有定义预处理器宏,并且只有在1
为Second
TEST
时才想为其添加一些代码(0
/未定义),我将它放在false
块(#else
)中。
知道语法着色和自动完成适用于// b
,看起来它可以正常工作,但如果我将当前目标更改为// b
一个(双关语)甚至构建它,它仍然有效,因为First
被选中。
答案 0 :(得分:4)
如果你想在Swift中这样做,你应该在User-Defined
中添加一个名为OTHER_SWIFT_FLAGS
的{{1}}设置,如下所示:
然后在您的代码中键入:
Build Settings
我不知道你为什么需要这个,但是查看本机Xcode Target可能会很有趣,可以使用具有相同根项目的多个应用程序的特定行为。如果这是你想要的,你应该查看一篇文章:AppCoda using Targets with XCode。
答案 1 :(得分:3)
只需转到目标 - >编辑方案 - >运行 - >信息并检查构建配置。现在,在构建设置中添加预处理器宏时,请确保添加宏以获得正确的构建配置和正确的目标。
我尝试为我的目标应用程序(Test-ObjectiveC)添加上述调试和发布版本。因此,当我使用此设置尝试下面的代码时,您可以相应地看到语法颜色。
答案 2 :(得分:0)
我可以通过设置“Target->Build Settings->All->Swift Compiler - Custom Flags -> Active Compilation Conditions”来让它工作。
XCode 12.3 版