当我使用 Apportable 构建我的项目时,它假定 Linux/Android 平台。我认为这些预处理器标志已设置。
__linux
ANDROID
但是,我的源代码(OpenGL 绘图)不适用于 Android,仅适用于 iOS。所以我想为 Apportable(不是 Linux 或 Android)检测一些预处理器标志,并执行一些 iOS 特定的处理。
如何在预处理阶段检测 Apportable 平台?(什么是 Apportable 的预定义预处理器标志?)
当我使用 Apportable 构建我的项目时,它假定 Linux/Android 平台。我认为这些预处理器标志已设置。
__linux
ANDROID
但是,我的源代码(OpenGL 绘图)不适用于 Android,仅适用于 iOS。所以我想为 Apportable(不是 Linux 或 Android)检测一些预处理器标志,并执行一些 iOS 特定的处理。
如何在预处理阶段检测 Apportable 平台?(什么是 Apportable 的预定义预处理器标志?)
您可以使用消息编译指示轻松验证是否定义了预处理器宏:
// 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 中构建时定义的。
ANDROID 将由构建系统定义,但是由于 Apportable 平台具有许多普通 Android 所没有的功能。APPORTABLE
被定义为表示由合适的构建系统构建。
您可以在以下位置找到特定于 Apportable 构建的其他构建标志
~/.apportable/SDK/site_scons/android/ndk.py