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



我有一个使用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文件)。

我发现其他人也有同样的问题(覆盖目标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的情况下进行编译。谢谢你的帮助。

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

最新更新