【问题标题】:How to specify #define commands for my two different targets如何为我的两个不同目标指定#define 命令
【发布时间】:2012-02-28 19:15:36
【问题描述】:

我有一个项目要分成两个目标。最初的单目标项目使用了许多定义命令,但是我现在需要这些值根据我正在构建的目标而有所不同。

这样做的正确方法是什么?我应该使用在 AppDelegate 上声明的 NStrings 吗?或者我可以在设置#defines 时使用#if 语句吗?

任何帮助,非常感谢。

【问题讨论】:

    标签: ios objective-c c-preprocessor target


    【解决方案1】:

    一种方法是这样的:

    #if defined(MON_TARGET_A)
      #define MON_TARGET_NAME "App A"
    #elif defined(MON_TARGET_B)
      #define MON_TARGET_NAME "App B"
    #else
      #error "which target are you building?"
    #endif
    

    然后将MON_TARGET_AMON_TARGET_B 添加到目标的预处理器设置中。

    通常,您将使用 GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS 而不是 GCC_PREPROCESSOR_DEFINITIONS,因为后者会阻止共享 PCH 标头。

    要添加它,请转到:

    • 项目导航器 -> 项目 -> 目标 -> 构建设置

    然后将GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS 放入搜索字段并将其值设置为:MON_TARGET_A $(inherited)

    【讨论】:

    • 为什么是 MON_... 前缀,只是出于好奇?
    • @NickLockwood 这很傻 - 你知道有些人是如何写他们的例子的:MyClass?例如,我使用MON 而不是My(例如MONClass)。法式扭曲。 (zh:my == fr:mon)
    【解决方案2】:

    您可以在目标设置中添加额外的预处理器宏(预处理->预处理器宏)并使用#ifdef。

    这是最灵活的方法。

    【讨论】:

    • 最大!你在现场,但贾斯汀先到了那里。无论如何,谢谢先生!
    猜你喜欢
    • 2012-07-25
    • 1970-01-01
    • 1970-01-01
    • 2013-11-22
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 2018-10-15
    • 1970-01-01
    相关资源
    最近更新 更多