覆盖目标Android Makefile的命令

时间:2013-08-28 07:41:48

标签: android-ndk makefile

我正在尝试使用g ++编译我的Android ndk项目中的一个模块,尽管源代码都在C中。 我的眼睛被制造系统警告所激怒:

`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进行编译时不会打印任何警告。

1 个答案:

答案 0 :(得分:3)

确保您已包含明确的变量:

include $(CLEAR_VARS)

如果构建包含正确构建宏的任何其他库,如

include $(BUILD_SHARED_LIBRARY)

我在一两天前遇到过这种情况,并且在添加新库时我忘了包含其中一个(我认为CLEAR_VARS最有意义。)所以它重新附加了一些值来自子库的主库,反之亦然。