5

Android ndk プロジェクトのモジュールの 1 つを g++ でコンパイルしようとしていますが、ソースはすべて C です。make システムの警告に目がくらみます:

`C:/NVPACK/android-ndk-r8d/build/core/build-binary.mk:348: warning: overriding commands for target 'obj/local/armeabi/objs/xxx/yyy.o'`  
`C:/NVPACK/android-ndk-r8d/build/core/build-binary.mk:345: warning: ignoring old commands for target 'obj/local/armeabi/objs/xxx/yyy.o'`

そして、これらの警告のペアは、ソース ファイルとオブジェクトが存在する限り出力されます。

私はすべての異なるフレーバーで LOCAL_SRC_FILES を宣言しようとしました。

`LOCAL_SRC_FILES :=  
$(LOCAL_PATH)/Directory/source.c   
$(notdir $(wildcard $(LOCAL_PATH)/*.c))  
$(notdir $(wildcard $(LOCAL_PATH)/Directory/*.c))  
$(addprefix DirectoryPrefix/,$(notdir $(wildcard $(LOCAL_PATH)/Directory/*.c)))`

それでも警告は続きます。
Make ドキュメントには次のように記載されています:
警告: ターゲット xxx のコマンドを上書きしています'' 警告: ターゲット xxx の古いコマンドを無視しています'' GNU make では、ターゲットごとに 1 回だけコマンドを指定できます (ダブルコロン規則を除く)。コマンドを持つように既に定義されているターゲットにコマンドを与えると、この警告が発行され、2 番目のコマンド セットが最初のセットを上書きします。

しかし、これがどのように関連しているかはまったく理解できません。対処した後、g ++をコンパイルしてこれらのCファイルを作成すると、この警告が表示されます。
したがって、次のステートメントを指定する
LOCAL_CPP_EXTENSION := .c
と、Cファイルがg ++でビルドされることが原因です。gcc でコンパイルすると、警告が表示されないためです。

4

1 に答える 1