1

这与我的另一个问题有关

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

__linux
ANDROID

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

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

4

2 回答 2

2

您可以使用消息编译指示轻松验证是否定义了预处理器宏:

// 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 中构建时定义的。

于 2013-05-25T14:18:21.237 回答
1

ANDROID 将由构建系统定义,但是由于 Apportable 平台具有许多普通 Android 所没有的功能。APPORTABLE被定义为表示由合适的构建系统构建。

您可以在以下位置找到特定于 Apportable 构建的其他构建标志

~/.apportable/SDK/site_scons/android/ndk.py
于 2013-05-25T18:47:54.510 回答