2014-05-23 37 views
0

我有建筑物使用NDK r9d我的C++代码的问题,因为我尝试使用C++编译器(G ++)我得到这个警告编译C文件:警告:目标重写命令的Android的Makefile

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编译。谢谢你的帮助。

+0

你为什么要将C文件编译为C++? –

+0

因为库在C中编写,所以现在使用一些C++代码从std中随机生成一个。该库不是我的,我会看看我是否可以将它改为C++。 – johnlamericain

回答

0

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

+0

感谢您的回答,很明显。如果我的客户同意,我会尝试重命名这些文件,否则只是忽略。干杯。 – johnlamericain