【问题标题】:Warning : Overriding commands for target Android Makefile警告:覆盖目标 Android Makefile 的命令
【发布时间】:2014-05-23 11:00:56
【问题描述】:

我在使用 NDK r9d 构建 C++ 代码时遇到问题,因为我尝试使用 C++ 编译器 (G++) 编译 C 文件,因此收到以下警告:

C:/Android/ndk/build/core/build-binary.mk:393: warning: overriding commands for target
C:/Android/ndk/build/core/build-binary.mk:391: warning: ignoring old commands for target

在我不需要用 C++ 11 编译并且我的 C 文件是用 GCC 编译之前,我没有任何问题,但由于我有 LOCAL_CPP_EXTENSION := .cpp .c,所以会出现此警告(仅适用于 C 文件)。

我发现其他人也有同样的问题 (Overriding commands for target Android Makefile) 但没有得到任何答案。

这是我的文件:

LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)

MY_INC_PATH := ../../..
LOCAL_MODULE    := test
LOCAL_CFLAGS    := -Werror
LOCAL_CPPFLAGS  := -std=c++11
LOCAL_LDLIBS    := -ldl -llog -lGLESv1_CM
LOCAL_C_INCLUDES := \
    $(MY_INC_PATH)
MY_SRC_PATH := ../../../..
LOCAL_CPP_EXTENSION := .cpp .c
LOCAL_SRC_FILES := \
    $(MY_SRC_PATH)/XXX.c \
    $(MY_SRC_PATH)/YYY.cpp \
    $(MY_SRC_PATH)/ZZZ.cpp

include $(BUILD_SHARED_LIBRARY)

我使用 NDK r9d 并在激活 G++ 4.8 和 C++ 11 的情况下进行编译。感谢您的帮助。

【问题讨论】:

  • 为什么要将 C 文件编译为 C++?
  • 因为库是用 C 编写的,所以现在使用一些 C++ 代码作为标准的随机生成器。库不是我的,我看看能不能改成C++。

标签: android-ndk ndk-build


【解决方案1】:

从 r9d 开始,NDK 不提供从 C 编译器取消关联 .c 文件的方法。您可以重新定义$$(TARGET_CC),也可以设置LOCAL_CFLAGS += -std=c++11,并且未设置 LOCAL_CPP_EXTENSION 以包含.c,但无论如何,这将是一个hack。因此,如果您无法重命名文件,并且不想破解您的 NDK,最干净的解决方案就是忽略警告。

【讨论】:

  • 感谢您的回答,很清楚。如果我的客户同意,我会尝试重命名文件,否则就忽略。干杯。
猜你喜欢
  • 2013-08-31
  • 1970-01-01
  • 2011-06-10
  • 2020-03-01
  • 2010-12-11
  • 1970-01-01
  • 1970-01-01
  • 2019-12-22
  • 1970-01-01
相关资源
最近更新 更多