2011-08-06 106 views
3

现在,我正在为Mac OS和iOS开发应用程序。我希望能够做到像块想要列出适用于iOS(和Mac)的Xcode宏和预处理器符号

#ifdef __IOS__ 
(stuff) 
#endif 

而且对像,特定MAC/IOS版本和硬件配置。我发现,

clang -dM -E - < /dev/null 

clang -x c++ -arch armv7 -dM -E - < /dev/null 

输出一些有用的信息,但它显然不是全部,我们有工作的符号。出于某种原因,通过xcode中的build命令或通过命令行中的xcodebuild,在项目设置中将-dM设置为编译器标志不起作用(因为没有额外的输出)。

任何提示?

感谢, 乔恩

回答

6

您可能会发现Availability.hAvailabilityInternal.h有益的,它定义了各种编译器为各种硬件配置,包括iOS和Mac OS版本号以及如何使用它们设置预处理器符号:

http://opensource.apple.com/source/CarbonHeaders/CarbonHeaders-18.1/Availability.h http://opensource.apple.com/source/CarbonHeaders/CarbonHeaders-18.1/AvailabilityInternal.h

您可以使用Xcode的键盘快捷键Cmd的 + Shift + O查找这些的最新/ beta版本的iOS版本。

另一个有用的定义是TARGET_IPHONE_SIMULATOR来检测是否编译为iOS模拟器。

+0

谢谢!如果我有代表,我会提高你的答案。如果问题消失了,我会检查你的回答,但我最好喜欢一个完整的符号列表。 – dongle