如何使用预处理器标志检测Apportable?

时间:2013-05-25 09:26:39

标签: preprocessor apportable

这与my other question

有关

当我使用Apportable构建项目时,它假设是Linux / Android平台。我认为这些预处理器标志已设置。

__linux
ANDROID

但是,我的源代码(OpenGL绘图)尚未准备好用于Android,仅适用于iOS。所以我想为Apportable(不是Linux或Android)检测一些预处理器标志,并执行一些特定于iOS的处理。

如何在预处理阶段检测Apportable平台? (什么是Apportable的预定义预处理器标志?)

2 个答案:

答案 0 :(得分:2)

您可以使用消息pragma:

轻松验证是否已定义预处理器宏
// will always print, to detect cases where file wasn't actually built
#pragma message "-------------------------ALWAYS----------------------------"

// if the macros are defined, the pragma message should be logged
#ifdef __linux
#pragma message "__linux"
#endif
#ifdef ANDROID
#pragma message "ANDROID"
#endif

这将打印出已定义的宏的警告消息:

/.../KTTypes.h:15:9: warning: -------------------------ALWAYS---------------------------- [-W#pragma-messages]
#pragma message "-------------------------ALWAYS----------------------------"
        ^
/.../KTTypes.h:17:9: warning: __linux [-W#pragma-messages]
#pragma message "__linux"
        ^
/.../KTTypes.h:20:9: warning: ANDROID [-W#pragma-messages]
#pragma message "ANDROID"

所以是的,ANDROID__linux都是在使用apportable构建时定义的,而在Xcode中构建时未定义。

答案 1 :(得分:1)

ANDROID将由构建系统定义,但是由于Apportable平台具有Android所不具备的众多功能。 APPORTABLE被定义为通过apportable构建系统表示构建。

您可以在

中找到特定于Apportable版本的其他构建标记
~/.apportable/SDK/site_scons/android/ndk.py