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

时间:2013-12-15 23:49:39

标签: android android-ndk java-native-interface makefile preprocessor

我使用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

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

APP_CPPFLAGS += -DLITE

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

  • 为什么?
  • 如何定义变量,以便我可以为full和lite版本创建两个不同的makefile?

2 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分:2)

Android.mk文件中定义的位置错误。 我需要在定义LOCAL_SRC_FILES之前定义它,但当然在include $(CLEAR_VARS)之后它才有效。