示例:

  如果在模拟器中运行就定义宏不编译rdp功能模块到app中,如果真机运行就编译rdp功能模块到app中。

  1. #if TARGET_IPHONE_SIMULATOR 
  2.     #define WITH_FREE_RDP           NOT_BUILD_IN    // 模拟器不支持RDP 
  3. #elif TARGET_OS_IPHONE 
  4.     #define WITH_FREE_RDP           BUILD_IN        // 支持RDP 
  5. #endif 

更多更详细的信息参看TargetConditionals.h

  1. /* 
  2.  * Copyright (c) 2000-2008 by Apple Inc.. All rights reserved. 
  3.  * 
  4.  * @APPLE_LICENSE_HEADER_START@ 
  5.  *  
  6.  * This file contains Original Code and/or Modifications of Original Code 
  7.  * as defined in and that are subject to the Apple Public Source License 
  8.  * Version 2.0 (the 'License'). You may not use this file except in 
  9.  * compliance with the License. Please obtain a copy of the License at 
  10.  * http://www.opensource.apple.com/apsl/ and read it before using this 
  11.  * file. 
  12.  *  
  13.  * The Original Code and all software distributed under the License are 
  14.  * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 
  15.  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 
  16.  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 
  17.  * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 
  18.  * Please see the License for the specific language governing rights and 
  19.  * limitations under the License. 
  20.  *  
  21.  * @APPLE_LICENSE_HEADER_END@ 
  22.  */ 
  23.   
  24. /* 
  25.      File:       TargetConditionals.h 
  26.   
  27.      Contains:   Autoconfiguration of TARGET_ conditionals for Mac OS X and iPhone 
  28.       
  29.                  Note:  TargetConditionals.h in 3.4 Universal Interfaces works 
  30.                         with all compilers.  This header only recognizes compilers 
  31.                         known to run on Mac OS X. 
  32.    
  33. */ 
  34.  
  35. #ifndef __TARGETCONDITIONALS__ 
  36. #define __TARGETCONDITIONALS__ 
  37. /**************************************************************************************************** 
  38.  
  39.     TARGET_CPU_*     
  40.     These conditionals specify which microprocessor instruction set is being 
  41.     generated.  At most one of these is true, the rest are false. 
  42.  
  43.         TARGET_CPU_PPC          - Compiler is generating PowerPC instructions for 32-bit mode 
  44.         TARGET_CPU_PPC64        - Compiler is generating PowerPC instructions for 64-bit mode 
  45.         TARGET_CPU_68K          - Compiler is generating 680x0 instructions 
  46.         TARGET_CPU_X86          - Compiler is generating x86 instructions 
  47.         TARGET_CPU_ARM          - Compiler is generating ARM instructions 
  48.         TARGET_CPU_MIPS         - Compiler is generating MIPS instructions 
  49.         TARGET_CPU_SPARC        - Compiler is generating Sparc instructions 
  50.         TARGET_CPU_ALPHA        - Compiler is generating Dec Alpha instructions 
  51.  
  52.  
  53.     TARGET_OS_*  
  54.     These conditionals specify in which Operating System the generated code will 
  55.     run. The MAC/WIN32/UNIX conditionals are mutually exclusive.  The EMBEDDED/IPHONE  
  56.     conditionals are variants of TARGET_OS_MAC.  
  57.  
  58.         TARGET_OS_MAC           - Generate code will run under Mac OS 
  59.         TARGET_OS_WIN32         - Generate code will run under 32-bit Windows 
  60.         TARGET_OS_UNIX          - Generate code will run under some non Mac OS X unix  
  61.         TARGET_OS_EMBEDDED      - Generate code will run under an embedded OS variant 
  62.                                   of TARGET_OS_MAC 
  63.         TARGET_OS_IPHONE        - Generate code will run under iPhone OS which  
  64.                                   is a variant of TARGET_OS_MAC. 
  65.  
  66.     TARGET_RT_*  
  67.     These conditionals specify in which runtime the generated code will 
  68.     run. This is needed when the OS and CPU support more than one runtime 
  69.     (e.g. Mac OS X supports CFM and mach-o). 
  70.  
  71.         TARGET_RT_LITTLE_ENDIAN - Generated code uses little endian format for integers 
  72.         TARGET_RT_BIG_ENDIAN    - Generated code uses big endian format for integers     
  73.         TARGET_RT_64_BIT        - Generated code uses 64-bit pointers     
  74.         TARGET_RT_MAC_CFM       - TARGET_OS_MAC is true and CFM68K or PowerPC CFM (TVectors) are used 
  75.         TARGET_RT_MAC_MACHO     - TARGET_OS_MAC is true and Mach-O/dlyd runtime is used 
  76.  
  77.  
  78.     TARGET_IPHONE_SIMULATOR     - Generate code for running under iPhone Simulator 
  79.          
  80.  
  81. ****************************************************************************************************/ 
  82.  
  83.  
  84. /* 
  85.  *    gcc based compiler used on Mac OS X 
  86.  */ 
  87. #if defined(__GNUC__) && ( defined(__APPLE_CPP__) || defined(__APPLE_CC__) || defined(__MACOS_CLASSIC__) ) 
  88.     #define TARGET_OS_MAC               1 
  89.     #define TARGET_OS_WIN32             0 
  90.     #define TARGET_OS_UNIX              0 
  91.     #define TARGET_OS_EMBEDDED          0  
  92.     #define TARGET_OS_IPHONE            1  
  93.     #define TARGET_IPHONE_SIMULATOR     1  
  94.     #if defined(__ppc__)  
  95.         #define TARGET_CPU_PPC          1 
  96.         #define TARGET_CPU_PPC64        0 
  97.         #define TARGET_CPU_68K          0 
  98.         #define TARGET_CPU_X86          0 
  99.         #define TARGET_CPU_X86_64       0 
  100.         #define TARGET_CPU_ARM          0 
  101.         #define TARGET_CPU_MIPS         0 
  102.         #define TARGET_CPU_SPARC        0    
  103.         #define TARGET_CPU_ALPHA        0 
  104.         #define TARGET_RT_LITTLE_ENDIAN 0 
  105.         #define TARGET_RT_BIG_ENDIAN    1 
  106.         #define TARGET_RT_64_BIT        0 
  107.         #ifdef __MACOS_CLASSIC__ 
  108.            #define TARGET_RT_MAC_CFM    1 
  109.            #define TARGET_RT_MAC_MACHO  0 
  110.         #else 
  111.            #define TARGET_RT_MAC_CFM    0 
  112.            #define TARGET_RT_MAC_MACHO  1 
  113.        #endif 
  114.     #elif defined(__ppc64__)  
  115.         #define TARGET_CPU_PPC          0 
  116.         #define TARGET_CPU_PPC64        1 
  117.         #define TARGET_CPU_68K          0 
  118.         #define TARGET_CPU_X86          0 
  119.         #define TARGET_CPU_X86_64       0 
  120.         #define TARGET_CPU_ARM          0 
  121.         #define TARGET_CPU_MIPS         0 
  122.         #define TARGET_CPU_SPARC        0    
  123.         #define TARGET_CPU_ALPHA        0 
  124.         #define TARGET_RT_LITTLE_ENDIAN 0 
  125.         #define TARGET_RT_BIG_ENDIAN    1 
  126.         #define TARGET_RT_64_BIT        1 
  127.         #define TARGET_RT_MAC_CFM       0 
  128.         #define TARGET_RT_MAC_MACHO     1 
  129.      #elif defined(__i386__)  
  130.         #define TARGET_CPU_PPC          0 
  131.         #define TARGET_CPU_PPC64        0 
  132.         #define TARGET_CPU_68K          0 
  133.         #define TARGET_CPU_X86          1 
  134.         #define TARGET_CPU_X86_64       0 
  135.         #define TARGET_CPU_ARM          0 
  136.         #define TARGET_CPU_MIPS         0 
  137.         #define TARGET_CPU_SPARC        0 
  138.         #define TARGET_CPU_ALPHA        0 
  139.         #define TARGET_RT_MAC_CFM       0 
  140.         #define TARGET_RT_MAC_MACHO     1 
  141.         #define TARGET_RT_LITTLE_ENDIAN 1 
  142.         #define TARGET_RT_BIG_ENDIAN    0 
  143.         #define TARGET_RT_64_BIT        0 
  144.      #elif defined(__x86_64__)  
  145.         #define TARGET_CPU_PPC          0 
  146.         #define TARGET_CPU_PPC64        0 
  147.         #define TARGET_CPU_68K          0 
  148.         #define TARGET_CPU_X86          0 
  149.         #define TARGET_CPU_X86_64       1 
  150.         #define TARGET_CPU_ARM          0 
  151.         #define TARGET_CPU_MIPS         0 
  152.         #define TARGET_CPU_SPARC        0 
  153.         #define TARGET_CPU_ALPHA        0 
  154.         #define TARGET_RT_MAC_CFM       0 
  155.         #define TARGET_RT_MAC_MACHO     1 
  156.         #define TARGET_RT_LITTLE_ENDIAN 1 
  157.         #define TARGET_RT_BIG_ENDIAN    0 
  158.         #define TARGET_RT_64_BIT        1 
  159.      #elif defined(__arm__)  
  160.         #define TARGET_CPU_PPC          0 
  161.         #define TARGET_CPU_PPC64        0 
  162.         #define TARGET_CPU_68K          0 
  163.         #define TARGET_CPU_X86          0 
  164.         #define TARGET_CPU_X86_64       0 
  165.         #define TARGET_CPU_ARM          1 
  166.         #define TARGET_CPU_MIPS         0 
  167.         #define TARGET_CPU_SPARC        0 
  168.         #define TARGET_CPU_ALPHA        0 
  169.         #define TARGET_RT_MAC_CFM       0 
  170.         #define TARGET_RT_MAC_MACHO     1 
  171.         #define TARGET_RT_LITTLE_ENDIAN 1 
  172.         #define TARGET_RT_BIG_ENDIAN    0 
  173.         #define TARGET_RT_64_BIT        0 
  174.     #else 
  175.         #error unrecognized GNU C compiler 
  176.     #endif 
  177.  
  178.  
  179. /* 
  180.  *   CodeWarrior compiler from Metrowerks/Motorola 
  181.  */ 
  182. #elif defined(__MWERKS__) 
  183.     #define TARGET_OS_MAC               1 
  184.     #define TARGET_OS_WIN32             0 
  185.     #define TARGET_OS_UNIX              0 
  186.     #define TARGET_OS_EMBEDDED          0 
  187.     #if defined(__POWERPC__) 
  188.         #define TARGET_CPU_PPC          1 
  189.         #define TARGET_CPU_PPC64        0 
  190.         #define TARGET_CPU_68K          0 
  191.         #define TARGET_CPU_X86          0 
  192.         #define TARGET_CPU_MIPS         0 
  193.         #define TARGET_CPU_SPARC        0 
  194.         #define TARGET_CPU_ALPHA        0 
  195.         #define TARGET_RT_LITTLE_ENDIAN 0 
  196.         #define TARGET_RT_BIG_ENDIAN    1 
  197.     #elif defined(__INTEL__) 
  198.         #define TARGET_CPU_PPC          0 
  199.         #define TARGET_CPU_PPC64        0 
  200.         #define TARGET_CPU_68K          0 
  201.         #define TARGET_CPU_X86          1 
  202.         #define TARGET_CPU_MIPS         0 
  203.         #define TARGET_CPU_SPARC        0 
  204.         #define TARGET_CPU_ALPHA        0 
  205.         #define TARGET_RT_LITTLE_ENDIAN 1 
  206.         #define TARGET_RT_BIG_ENDIAN    0 
  207.     #else 
  208.         #error unknown Metrowerks CPU type 
  209.     #endif 
  210.     #define TARGET_RT_64_BIT            0 
  211.     #ifdef __MACH__ 
  212.         #define TARGET_RT_MAC_CFM       0 
  213.         #define TARGET_RT_MAC_MACHO     1 
  214.     #else 
  215.         #define TARGET_RT_MAC_CFM       1 
  216.         #define TARGET_RT_MAC_MACHO     0 
  217.     #endif 
  218.  
  219. /* 
  220.  *   unknown compiler 
  221.  */ 
  222. #else 
  223.     #if defined(TARGET_CPU_PPC) && TARGET_CPU_PPC 
  224.         #define TARGET_CPU_PPC64    0 
  225.         #define TARGET_CPU_68K      0 
  226.         #define TARGET_CPU_X86      0 
  227.         #define TARGET_CPU_X86_64   0 
  228.         #define TARGET_CPU_ARM      0 
  229.         #define TARGET_CPU_MIPS     0 
  230.         #define TARGET_CPU_SPARC    0 
  231.         #define TARGET_CPU_ALPHA    0 
  232.     #elif defined(TARGET_CPU_PPC64) && TARGET_CPU_PPC64 
  233.         #define TARGET_CPU_PPC      0 
  234.         #define TARGET_CPU_68K      0 
  235.         #define TARGET_CPU_X86      0 
  236.         #define TARGET_CPU_X86_64   0 
  237.         #define TARGET_CPU_ARM      0 
  238.         #define TARGET_CPU_MIPS     0 
  239.         #define TARGET_CPU_SPARC    0 
  240.         #define TARGET_CPU_ALPHA    0 
  241.     #elif defined(TARGET_CPU_X86) && TARGET_CPU_X86 
  242.         #define TARGET_CPU_PPC      0 
  243.         #define TARGET_CPU_PPC64    0 
  244.         #define TARGET_CPU_X86_64   0 
  245.         #define TARGET_CPU_68K      0 
  246.         #define TARGET_CPU_ARM      0 
  247.         #define TARGET_CPU_MIPS     0 
  248.         #define TARGET_CPU_SPARC    0 
  249.         #define TARGET_CPU_ALPHA    0 
  250.     #elif defined(TARGET_CPU_X86_64) && TARGET_CPU_X86_64 
  251.         #define TARGET_CPU_PPC      0 
  252.         #define TARGET_CPU_PPC64    0 
  253.         #define TARGET_CPU_X86      0 
  254.         #define TARGET_CPU_68K      0 
  255.         #define TARGET_CPU_ARM      0 
  256.         #define TARGET_CPU_MIPS     0 
  257.         #define TARGET_CPU_SPARC    0 
  258.         #define TARGET_CPU_ALPHA    0 
  259.     #elif defined(TARGET_CPU_ARM) && TARGET_CPU_ARM 
  260.         #define TARGET_CPU_PPC      0 
  261.         #define TARGET_CPU_PPC64    0 
  262.         #define TARGET_CPU_X86      0 
  263.         #define TARGET_CPU_X86_64   0 
  264.         #define TARGET_CPU_68K      0 
  265.         #define TARGET_CPU_MIPS     0 
  266.         #define TARGET_CPU_SPARC    0 
  267.         #define TARGET_CPU_ALPHA    0 
  268.     #else 
  269.         /* 
  270.             NOTE:   If your compiler errors out here then support for your compiler  
  271.             has not yet been added to TargetConditionals.h.   
  272.              
  273.             TargetConditionals.h is designed to be plug-and-play.  It auto detects 
  274.             which compiler is being run and configures the TARGET_ conditionals 
  275.             appropriately.   
  276.              
  277.             The short term work around is to set the TARGET_CPU_ and TARGET_OS_ 
  278.             on the command line to the compiler (e.g. -DTARGET_CPU_MIPS=1 -DTARGET_OS_UNIX=1) 
  279.              
  280.             The long term solution is to add a new case to this file which 
  281.             auto detects your compiler and sets up the TARGET_ conditionals. 
  282.             Then submit the changes to Apple Computer. 
  283.         */ 
  284.         #error TargetConditionals.h: unknown compiler (see comment above) 
  285.         #define TARGET_CPU_PPC    0 
  286.         #define TARGET_CPU_68K    0 
  287.         #define TARGET_CPU_X86    0 
  288.         #define TARGET_CPU_ARM    0 
  289.         #define TARGET_CPU_MIPS   0 
  290.         #define TARGET_CPU_SPARC  0 
  291.         #define TARGET_CPU_ALPHA  0 
  292.     #endif 
  293.     #define TARGET_OS_MAC                1 
  294.     #define TARGET_OS_WIN32              0 
  295.     #define TARGET_OS_UNIX               0 
  296.     #define TARGET_OS_EMBEDDED           0 
  297.     #if TARGET_CPU_PPC || TARGET_CPU_PPC64 
  298.         #define TARGET_RT_BIG_ENDIAN     1 
  299.         #define TARGET_RT_LITTLE_ENDIAN  0 
  300.     #else 
  301.         #define TARGET_RT_BIG_ENDIAN     0 
  302.         #define TARGET_RT_LITTLE_ENDIAN  1 
  303.     #endif 
  304.     #if TARGET_CPU_PPC64 || TARGET_CPU_X86_64 
  305.         #define TARGET_RT_64_BIT         1 
  306.     #else 
  307.         #define TARGET_RT_64_BIT         0 
  308.     #endif 
  309.     #ifdef __MACH__ 
  310.         #define TARGET_RT_MAC_MACHO      1 
  311.         #define TARGET_RT_MAC_CFM        0 
  312.     #else 
  313.         #define TARGET_RT_MAC_MACHO      0 
  314.         #define TARGET_RT_MAC_CFM        1 
  315.     #endif 
  316.      
  317. #endif 
  318.  
  319. #endif  /* __TARGETCONDITIONALS__ */