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

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

我使用 jni 创建了一个 Android 项目。现在我想使用预处理器宏来区分精简版和完整版。它应该看起来像这样:

#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 时,同一行有效。

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

最佳答案

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

关于android - Android.mk 中的预处理器宏被忽略,但在 Application.mk 中有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20601420/

相关文章:

java - 为什么 `text`打开自定义对话框不显示?

android - 如何在 Retrofit GET 请求中发送对象参数?

eclipse - 无法通过 Eclipse 在 Genymotion 中调试 native Android 应用程序

c++ - JNI : java. lang.UnsatisfiedLinkError 错误

android - 无法解析对应的JNI函数 java_com_android_inputmethod_keyboard_ProximityInfo_setProximityInfoNative

java - 使用 JNI 或其他工具,是否可以在 Java 中实现 C 代码的反射?

android - 隐式 Intent 未被调用

android - 如何使用android ndk访问相机

Android NDK UnsatisfiedLinkError - 一个令人惊讶的原因

android - Google Place Picker 小部件无法正常工作