2014-05-23 55 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