0

C++ コンパイラ (G++) を使用して C ファイルをコンパイルしようとしたため、NDK r9d を使用して 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 を有効にしてコンパイルします。ご協力いただきありがとうございます。

4

1 に答える 1

0

r9d の時点で、NDK は.cC コンパイラからファイルの関連付けを解除する方法を提供していません。を再定義し$$(TARGET_CC)たり、 を設定したり、 includeに設定したりできませんLOCAL_CFLAGS += -std=c++11が、とにかくハックになります。そのため、ファイルの名前を変更できず、NDK をハッキングしたくない場合、最もクリーンな解決策は、単に警告を無視することです。 LOCAL_CPP_EXTENSION.c

于 2014-05-24T14:50:57.463 に答える