【发布时间】:2013-08-31 04:16:43
【问题描述】:
我正在尝试使用 g++ 编译我的 Android ndk 项目中的模块之一,尽管源代码都在 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)))`
警告仍然存在。
制作文件说:
警告:覆盖目标 xxx 的命令''
警告:忽略目标 xxx'' 的旧命令
GNU make 允许每个目标只指定一次命令(双冒号规则除外)。如果您为已经定义为具有命令的目标发出命令,则会发出此警告,并且第二组命令将覆盖第一组。
但我完全不明白这有什么关系。
处理后似乎让 g++ 编译这些 C 文件会出现此警告。
因此指定此语句:LOCAL_CPP_EXTENSION := .c
这使得使用 g++ 构建的 C 文件是导致它的原因。因为使用 gcc 编译时不会打印任何警告。
【问题讨论】:
标签: android-ndk makefile