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__ */