Android.mk中的预处理器宏被忽略,但在Application.mk中有效

geb*_*bel 3 java-native-interface android preprocessor makefile android-ndk

我使用jni创建了一个Android项目.现在我想使用预处理器宏来区分lite和完整版本.它应该如下所示:

#ifdef LITE
    auto label = LabelTTF::create("Hello Cocos2dx Lite", "Arial", 24);
#else
    auto label = LabelTTF::create("Hello Cocos2dx Full", "Arial", 24);
#endif
Run Code Online (Sandbox Code Playgroud)

为此,我在Android.mk中的APP_CPPFLAGS中定义了一个变量,如下所示:

APP_CPPFLAGS += -DLITE
Run Code Online (Sandbox Code Playgroud)

不幸的是,应用程序完全忽略它,我仍然看到标签"Hello Cocos2dx Full".但是,当我将它放在Application.mk中时,同一行也可以工作.

  • 这是为什么?
  • 如何定义变量,以便我可以为完整版和精简版提供两个不同的makefile?

Ale*_*ohn 8

APP_CPPFLAGS所有其他APP_ make变量都应该在Application.mk中设置.对于每个模块的更改,请使用LOCAL_CPPFLAGSLOCAL_CFLAGS

  • 那么`LOCAL_CFLAGS`怎么样? (3认同)