How to define a preprocessor symbol in Xcode

前端 未结 8 1835
旧巷少年郎
旧巷少年郎 2020-11-27 10:32

Is it possible to set a symbol for conditional compilation by setting up properties in an Xcode project?

My aim is to to create a symbol that is available to all fil

相关标签:
8条回答
  • 2020-11-27 11:00

    It's under "GCC 4.2 Preprocessing" (or just put "prepro" in the search box)...

    ...however, for the life of me I can't get it to work.

    I have my standard Debug and Release configurations, and I want to define DEBUG=1 in the debugging configuration. But after adding it as a value:

    (in the settings window) > Preprocessor Macros : DEBUG=1

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

    ...never prints/gets called. It's driving me crazy...

    0 讨论(0)
  • 2020-11-27 11:07

    Go to your Target or Project settings, click the Gear icon at the bottom left, and select "Add User-Defined Setting". The new setting name should be GCC_PREPROCESSOR_DEFINITIONS, and you can type your definitions in the right-hand field.

    Per Steph's comments, the full syntax is:

    constant_1=VALUE constant_2=VALUE
    

    Note that you don't need the '='s if you just want to #define a symbol, rather than giving it a value (for #ifdef statements)

    0 讨论(0)
  • 2020-11-27 11:10

    In response to Kevin Laity's comment (see cdespinosa's answer), about the GCC Preprocessing section not showing in your build settings, make the Active SDK the one that says (Base SDK) after it and this section will appear. You can do this by choosing the menu Project > Set Active Target > XXX (Base SDK). In different versions of XCode (Base SDK) maybe different, like (Project Setting or Project Default).

    After you get this section appears, you can add your definitions to Processor Macros rather than creating a user-defined setting.

    0 讨论(0)
  • 2020-11-27 11:14

    For Xcode 9.4.1 and C++ project. Adding const char* Preprocessor Macros to both Debug and Release builds.

    1. Select your project

    2. Select Build Settings

    3. Search "Preprocessor Macros"

    4. Open interactive list

    5. Add your macros and don't forget to escape quotation

    6. Use in source code as common const char*

      ...
      #ifndef JSON_DEFINITIONS_FILE_PATH
      static constexpr auto JSON_DEFINITIONS_FILE_PATH = "definitions.json";
      #endif
      ...
      FILE *pFileIn = fopen(JSON_DEFINITIONS_FILE_PATH, "r");
      ...
      
    0 讨论(0)
  • 2020-11-27 11:20

    You don't need to create a user-defined setting. The built-in setting "Preprocessor Macros" works just fine. alt text http://idisk.mac.com/cdespinosa/Public/Picture%204.png

    If you have multiple targets or projects that use the same prefix file, use Preprocessor Macros Not Used In Precompiled Headers instead, so differences in your macro definition don't trigger an unnecessary extra set of precompiled headers.

    0 讨论(0)
  • 2020-11-27 11:20

    You can use the *_Prefix.pch file to declare project wide macros. That file is usually in you Other Sources group.

    0 讨论(0)
提交回复
热议问题