Xcode 利用宏定义区分iphone 模拟器和真机

示例:

  如果在模拟器中运行就定义宏不编译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__ */

 

posted @ 2013-01-29 10:31  Kappia  阅读(1167)  评论(0编辑  收藏  举报