警告:覆盖目标Android Makefile的命令

时间:2014-05-23 11:00:56

标签: android-ndk ndk-build

我在使用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激活编译。谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

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