所以我一直在摸不着头脑:基本上,我有两个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
宏),但无法找到令人满意的解决方案。
如何正确(而非手动)指定正确的目录?
答案 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)