目标预处理器宏在Xcode中被预处理器忽略

时间:2017-03-02 12:07:00

标签: xcode preprocessor preprocessor-directive

我在项目目标TEST=1的{​​{1}}部分添加了Preprocessor Macros,每当我在代码中使用它时,预处理器都认为它没有定义

  1. alt +点击它会显示一个问号
  2. 语法着色效果不佳
  3. 语法自动填充功能不正常
  4. 例如,拥有:

    Build Settings

    有这种行为:

    1. 语法着色仅适用于#if TEST // a #else // b #endif
    2. 语法自动填充仅适用于// b
    3. 这是因为预处理器无法找到// b(即使它被定义为TEST,正如我之前所说的那样)所以它将其视为{{1} }。

      有没有办法解决这些问题?

      修改

      我的用例与多个项目目标有关。因此,假设初始目标名为1,其false预处理器宏定义为值First

      如果我创建另一个名为TEST的项目目标,但没有定义预处理器宏,并且只有在1Second TEST时才想为其添加一些代码(0 /未定义),我将它放在false块(#else)中。

      知道语法着色和自动完成适用于// b,看起来它可以正常工作,但如果我将当前目标更改为// b一个(双关语)甚至构建它,它仍然有效,因为First被选中。

3 个答案:

答案 0 :(得分:4)

如果你想在Swift中这样做,你应该在User-Defined中添加一个名为OTHER_SWIFT_FLAGS的{​​{1}}设置,如下所示:

OTHER_SWIFT_FLAGS user-defined setting

然后在您的代码中键入:

Build Settings

我不知道你为什么需要这个,但是查看本机Xcode Target可能会很有趣,可以使用具有相同根项目的多个应用程序的特定行为。如果这是你想要的,你应该查看一篇文章:AppCoda using Targets with XCode

答案 1 :(得分:3)

只需转到目标 - >编辑方案 - >运行 - >信息并检查构建配置。现在,在构建设置中添加预处理器宏时,请确保添加宏以获得正确的构建配置和正确的目标。

≈

我尝试为我的目标应用程序(Test-ObjectiveC)添加上述调试和发布版本。因此,当我使用此设置尝试下面的代码时,您可以相应地看到语法颜色。

enter image description here

答案 2 :(得分:0)

我可以通过设置“Target->Build Settings->All->Swift Compiler - Custom Flags -> Active Compilation Conditions”来让它工作。

XCode 12.3 版