【问题标题】:Preprocessor macro in Android.mk is ignored, but works in Application.mkAndroid.mk 中的预处理器宏被忽略,但在 Application.mk 中有效
【发布时间】:2014-01-03 06:47:30
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 你是对的。此外,将#define 变量放在 LOCAL_CFLAGS 中。它的工作就像 sharm
    • 带开关 -D
    【解决方案2】:

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

    【讨论】:

    • 我试过了,但 LOCAL_CPPFLAGS 完全没有效果 :( 是的,我确信,我正在使用正确的 Android.mk 文件。我在控制台中看到警告,我添加以检查。
    • LOCAL_CFLAGS 呢?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-11
    • 2017-06-01
    • 2018-06-02
    相关资源
    最近更新 更多