首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使"ndk-build干净“继续错误

如何使"ndk-build干净“继续错误
EN

Stack Overflow用户
提问于 2013-12-16 16:29:27
回答 2查看 6.2K关注 0票数 4

我有一个包含多个项目的大型源代码树。其中一个项目使用JNI。

当我试图“清理”我的整个源树时,它会遍历并移除所有的对象文件和库。然后,它进入我的应用程序目录进行清理。

当它到达我的JNI项目时,它会执行“ndk-”,这是因为我所链接的库已经作为clean的一部分被删除了:

代码语言:javascript
复制
ndk-build clean
Android NDK: ERROR:/Users/spartygw/xyz/src/applications/foo/jni/Android.mk:bar: LOCAL_SRC_FILES points to a missing file    
Android NDK: Check that /Users/spartygw/xyz/src/applications/foo/jni/../../../../lib/libbar.a exists or that its path is correct   
/Users/spartygw/android-ndk-r6b/build/core/prebuilt-library.mk:43: *** Android NDK: Aborting    .  Stop.
make[3]: *** [clean_android] Error 2
make[2]: *** [clean] Error 2
make[1]: *** [clean] Error 2
make: *** [clean] Error 2

我尝试过添加“ndk-构建-k干净”和“ndk-构建-忽略干净”,但它没有救出。

如何使ndk-build忽略对尚未构建的库的依赖,只清除本地对象?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-17 02:42:57

您的ndk包括prebuit静态库,即使在干净的构建中也不应该消失。有一些非标准的步骤构建libbar.a并将其复制到../../../../lib/

如果您有很强的理由不链接到libbar.a,直接从它构建的地方(…/obj/local/armeabi),那么您有两个选项:如果有条件地include $(PREBUILT_STATIC_LIBRARY) $(LOCAL_SRC_FILES)存在,或者如果干净不是目标。

以下是前一种方法的简单概述:

代码语言:javascript
复制
include $(CLEAR_VARS)
LOCAL_MODULE = bar
LOCAL_PATH := ../../../../lib
LOCAL_SRC_FILES := libbar.a
ifneq (,$(wildcard $(LOCAL_PATH)/$(LOCAL_SRC_FILES)))
  include $(PREBUILT_STATIC_LIBRARY)
endif
票数 5
EN

Stack Overflow用户

发布于 2018-05-07 20:52:40

正如Alex的答案所建议的,您也可以使用ifneq ($(MAKECMDGOALS),clean)来检查当前的目标是否不是clean

代码语言:javascript
复制
include $(CLEAR_VARS)
LOCAL_MODULE := foo
LOCAL_SRC_FILES := bar.so
LOCAL_EXPORT_C_INCLUDES := bar/location
# Avoid including on clean
ifneq ($(MAKECMDGOALS),clean)
    include $(PREBUILT_SHARED_LIBRARY)
endif
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20615802

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档