由于路径中有额外的LOCAL_PATH,Android makefile无法找到库

时间:2014-07-29 09:49:06

标签: android android-ndk makefile

所以我一直在摸不着头脑:基本上,我有两个Android makefile,一个在我的jni文件夹中,另一个在另一个包含我的本机c ++代码的文件夹中。

对于以下makefile,

LOCAL_PATH := $(call my-dir)

GENERATED_PATH := $(LOCAL_PATH)/../../generated/release/api/Android

############################  Includes ############################

#------------------------------------------------------------------ Assimp

LOCAL_MODULE := Assimp
LOCAL_EXPORT_C_INCLUDES := $(GENERATED_PATH)/assimp/include
LOCAL_SRC_FILES := $(GENERATED_PATH)/assimp/lib/libassimp.a

include $(PREBUILT_STATIC_LIBRARY)

# More Libraries included....
#....

我收到以下错误:

  

Android NDK:错误:jni /../../../ appCommon / Android.mk:Assimp:LOCAL_SRC_FILES指向丢失的文件

     

Android NDK:检查jni /../../../ appCommon / jni /../../../ appCommon /../../ generated / release / api / Android / assimp / lib / libassimp.a存在或其路径正确

我发现错误的是,在ndk搜索库的路径中,LOCAL_PATH的两倍。我已经阅读过像这样的一些案例(比如使用notdir宏),但无法找到令人满意的解决方案。

如何正确(而非手动)指定正确的目录?

1 个答案:

答案 0 :(得分:2)

事实证明问题源于PREBUILT_STATIC_LIBRARY脚本,该脚本在以下路径中查找lib:$(LOCAL_PATH)/$(LOCAL_SRC_FILES)

因此,一个简单的解决方法是为目录设置单独的变量,例如:

GENERATED_PATH := ../../generated/release/api/Android
GENERATED_INCLUDE_PATH := $(LOCAL_PATH)/$(GENERATED_PATH)

然后像这样使用它们:

LOCAL_MODULE := Assimp
LOCAL_EXPORT_C_INCLUDES := $(GENERATED_INCLUDE_PATH)/assimp/include
LOCAL_SRC_FILES := $(GENERATED_PATH)/assimp/lib/libassimp.a

include $(PREBUILT_STATIC_LIBRARY)