在我的原来的Android.mk中在最后两行增加:
include $(CLEAR_VARS)
include $(call all-subdir-makefiles)
想在编译完本地之后,再编译子目录下的文件,结果不起作用。
换成下面的写法就可以了:
include $(CLEAR_VARS)
include $(call all-makefiles-under,$(LOCAL_PATH))
这个问题就是all-subdir-makefiles,all-makefiles-under带来的区别,all-subdir-makefiles应该是值编译子目录,不管当前目录,all-makefiles-under则是遍历所有的Android.mk。
call all-subdir-makefiles与LOCAL_PATH
LOCAL_PATH:= $(call my-dir)通常是Anrdoid.mk的第一行,当一级的Android.mk的内容是:
include $(call all-subdir-makefiles)
那么,进入子目录的编译,通过ndk-build编译,my-dir的返回结果还是一级目录的Android.mk的路径,所以在子目录的Android.mk里面,我直接采用当前目录的相对目录的写法才解决了问题。
LOCAL_SRC_FILES := $(LOCAL_PATH)sdk/$(TARGET_ARCH_ABI)/libdeflicker.so
修改为:
LOCAL_SRC_FILES := sdk/$(TARGET_ARCH_ABI)/libdeflicker.so
本文详细解析了在Android.mk中使用all-subdir-makefiles与all-makefiles-under的区别,以及如何正确编译子目录下的文件。通过调整makefile调用方式,确保子目录的Android.mk能够正确识别并编译。
3263

被折叠的 条评论
为什么被折叠?



