如何在另一个makefile中包含Android.mk

如何在另一个makefile中包含Android.mk,makefile,android-ndk,Makefile,Android Ndk,我有一个问题,包括另一个Android.mk和建立依赖共享库 生成文件: LOCAL_PATH := $(call my-dir) MY_CORE_PATH := $(abspath $(LOCAL_PATH)/../..) include $(CLEAR_VARS) LOCAL_MODULE := Phone LOCAL_SRC_FILES := phone.cpp LOCAL_SHARED_LIBRARIES := libCore include $(BUILD_SHARED

我有一个问题,包括另一个Android.mk和建立依赖共享库

生成文件:

LOCAL_PATH := $(call my-dir)

MY_CORE_PATH := $(abspath $(LOCAL_PATH)/../..)
include $(CLEAR_VARS)

LOCAL_MODULE     := Phone
LOCAL_SRC_FILES  := phone.cpp
LOCAL_SHARED_LIBRARIES := libCore

include $(BUILD_SHARED_LIBRARY)    
include $(MY_CORE_PATH)/Android.mk
当我编译这个时,我得到一个错误

make: *** No rule to make target 'libCore.so' needed by 'libPhone.so'. Stop.
然而,libCore.so构建时没有任何问题,但是这个makefile无法正确引用它。请提供有关如何解决此问题的任何建议

NDK和Android版本:Android-NDK-r6,Android ICS的API 9级构建

我目前可以通过进行以下更改来解决此问题

# Modified Android.mk

LOCAL_PATH := $(call my-dir)
MY_CORE_PATH := $(abspath $(LOCAL_PATH)/../..)

# libCore
include $(CLEAR_VARS)
LOCAL_MODULE := Core
include $(MY_CORE_PATH)/Android.mk

include $(CLEAR_VARS)

LOCAL_MODULE     := Phone
LOCAL_SRC_FILES  := phone.cpp
LOCAL_SRC_FILES += libCore

include $(BUILD_SHARED_LIBRARY)

我找到了编译错误的原因。这是因为在另一个makefile中未正确提供本地_模块名称。以下是所做的更改

[1] 在构建libCore.so的Android.mk中,模块名被称为

LOCAL_MODULE := Core
而不是

LOCAL_MODULE := libCore
[2] 最后两个语句互换;首先包含Makefile,然后构建库

我的理解是“lib”在模块名中是可选的。我并不怀疑这一点,因为它在NDK中构建得很好,当它作为Android源代码树的一部分构建时,问题就出现了