我正在编写一些半便携式代码,并希望能够检测我何时编译iPhone.所以我想要类似的东西#ifdef IPHONE_SDK...
.
据推测,Xcode定义了一些东西,但我在项目属性下看不到任何东西,谷歌也没什么帮助.
它位于"有条件地编译源代码"下的SDK文档中
相关定义是TARGET_OS_IPHONE(并且他弃用了TARGET_IPHONE_SIMULATOR),它们在iOS框架中的/usr/include/TargetConditionals.h中定义.在早期版本的工具链中,您必须编写:
#include "TargetConditionals.h"
但是当前(xCode 6/iOS8)工具链不再需要这个.
因此,例如,如果您只想构建一个代码块,那么您应该这样做
#if !(TARGET_OS_SIMULATOR) ... #endif
要查看所有已定义的宏,请将其添加到构建配置的"其他C标志"中:
-g3 -save-temps -dD
您将获得一些构建错误,但编译器会将所有定义转储到项目根目录中的.mi文件中.您可以使用grep查看它们,例如:
grep define main.mi
完成后,不要忘记从构建设置中删除这些选项.