代码之家  ›  专栏  ›  技术社区  ›  Steph Thirion

如何在Xcode中定义预处理器符号

  •  106
  • Steph Thirion  · 技术社区  · 16 年前

    是否可以通过在Xcode项目中设置属性来设置条件编译的符号?

    我的目标是创建一个可用于所有文件的符号,而不必使用import/include,这样一组通用类在某些项目中就可以具有特殊的行为。就像下面一样,但有我自己的符号。

    #if TARGET_IPHONE_SIMULATOR
        ...
    #endif
    
    8 回复  |  直到 9 年前
        1
  •  116
  •   jww avp    8 年前

    转到目标或项目设置,单击左下角的齿轮图标,然后选择“添加用户定义设置”。新设置名称应为 GCC_PREPROCESSOR_DEFINITIONS ,您可以在右侧字段中键入定义。

    根据斯蒂芬的评论,完整的语法是:

    constant_1=VALUE constant_2=VALUE
    

    请注意,你没有 需要 如果你只是想#定义一个符号,而不是给它一个值(for #ifdef 声明)

        2
  •  86
  •   cdespinosa Martin Cote    16 年前

    您不需要创建用户定义的设置。内置设置“预处理器宏”工作正常。 alt text http://idisk.mac.com/cdespinosa/Public/Picture%204.png

    如果您有多个使用相同前缀文件的目标或项目,请改用预处理器“未在预编译标头中使用的宏”,这样宏定义中的差异就不会触发不必要的额外预编译标头集。

        3
  •  41
  •   Stickley    13 年前

    作为补充,如果你使用这种技术在目标中定义字符串,我必须这样定义和使用它们:

    在构建设置中->预处理器宏和yes反斜杠在定义中至关重要:

    APPURL_NSString=\@\"www.foobar.org\"
    

    在源代码中:

    objectManager.client.baseURL = APPURL_NSString;
    
        4
  •  5
  •   chunkyguy    13 年前

    您可以使用 *_Prefix.pch 用于声明项目范围宏的文件。 那个文件通常在你的 其他来源 集团。

        5
  •  3
  •   hEADcRASH    15 年前

    适用于Xcode 9.4.1和C++项目。加法 const char* 预处理器宏到两者 调试 释放 建筑。

    1. 选择您的项目

      select project

    2. 选择 生成设置

      select build settings

    3. 搜索“ 预处理宏 "

      search1 search2

    4. 打开交互式列表

      open interactive list

    5. 添加宏,别忘了转义引号

      add path

    6. 在源代码中经常使用 const字符*

      ...
      #ifndef JSON_DEFINITIONS_FILE_PATH
      static constexpr auto JSON_DEFINITIONS_FILE_PATH = "definitions.json";
      #endif
      ...
      FILE *pFileIn = fopen(JSON_DEFINITIONS_FILE_PATH, "r");
      ...
      
        6
  •  2
  •   Petr Javorik    7 年前

    它位于“GCC 4.2预处理”下(或者只需在搜索框中输入“prepro”)。..

    然而,无论如何,我都无法让它发挥作用。

    我有我的标准调试和发布配置,我想在调试配置中定义Debug=1。但在将其添加为值后:

    (在设置窗口中)>预处理器宏:调试=1

    #if DEBUG
        printf("DEBUG is set!");
    #endif 
    

    …从不打印/接到电话。它快把我逼疯了。..

        7
  •  1
  •   Mark24x7    15 年前

    针对Kevin Laity关于GCC预处理部分未显示在构建设置中的评论(见cdespinosa的回答),请将Active SDK设置为后面写着(Base SDK)的部分,然后显示此部分。您可以通过选择菜单“项目”来完成此操作>设置活动目标>XXX(基础SDK)。在不同版本的XCode(Base SDK)中可能会有所不同,例如(项目设置或项目默认值)。

    出现此部分后,您可以将定义添加到处理器宏中,而不是创建用户定义的设置。

        8
  •  0
  •   kslcam    14 年前

    您可以复制具有预处理部分的目标,将其重命名为所需的任何名称,然后更改预处理器宏值。