首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有多个模块的Android.mk,CLEAR_VARS对每个模块做什么?

有多个模块的Android.mk,CLEAR_VARS对每个模块做什么?
EN

Stack Overflow用户
提问于 2015-09-10 15:02:06
回答 2查看 1.8K关注 0票数 2

我正在努力更好地理解Android.mk。我现在正在使用一个库来构建一个项目,我的Android.mk如下所示:

代码语言:javascript
复制
LOCAL_PATH := $(call my-dir)
SUPERPOWERED_PATH := ../../../../superpowered/Superpowered

include $(CLEAR_VARS)
LOCAL_MODULE := Superpowered
ifeq ($(TARGET_ARCH_ABI),armeabi-v7a)
    LOCAL_SRC_FILES := $(SUPERPOWERED_PATH)/libSuperpoweredARM.a
else
    ifeq ($(TARGET_ARCH_ABI),arm64-v8a)
        LOCAL_SRC_FILES := $(SUPERPOWERED_PATH)/libSuperpoweredARM64.a
    else
        LOCAL_SRC_FILES := $(SUPERPOWERED_PATH)/libSuperpoweredX86.a
    endif
endif
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)  
LOCAL_MODULE := SuperpoweredExample  

LOCAL_SRC_FILES := \
    SuperpoweredExample.cpp \
    $(SUPERPOWERED_PATH)/SuperpoweredAndroidAudioIO.cpp
LOCAL_C_INCLUDES += $(SUPERPOWERED_PATH)

LOCAL_LDLIBS := -llog -landroid -lOpenSLES 
LOCAL_STATIC_LIBRARIES := Superpowered
LOCAL_CFLAGS = -O3
include $(BUILD_SHARED_LIBRARY)

我的问题是关于$(CLEAR_VARS)include $(PREBUILT_STATIC_LIBRARY)LOCAL_MODULE := SuperpoweredExample之间的界限

通过阅读http://android.mk,我对CLEAR_VARS的理解是,清除执行空间中的所有LOCAL_变量,以进行生成解析。那么,我如何能够指向文件后面的超级动力模块。在我看来,这是不可能的。

我的想法是,MAKE解析器进行解析,然后在声明和解析每个模块之后维护一些“模块”空间,这与实际的解析空间是分开的。这是一个完全的猜测,但我有一些困难,找到一个资源,涵盖什么发生在后台。

EN

回答 2

Stack Overflow用户

发布于 2016-04-13 06:59:59

当前目录在ndk的整个生命周期中没有改变--构建,即使有许多模块、嵌入式Android.mk文件等等。这就是为什么$(SUPERPOWERED_PATH)将与所有模块保持相关性(如果使用$(LOCAL_PATH)或其他*make*变量,则不会如此)。

CLEAR_VARS的作用是重置变量modules-LOCALS中列出的所有make变量。Here是如何自定义此行为的一个示例。

票数 1
EN

Stack Overflow用户

发布于 2016-04-13 05:27:28

SUPERPOWERED_PATH在该行中设置jni文件夹路径的当前路径,并在

特殊格式

C:/Users/Text/Desktop/TimeStreach/app/src/main/jni

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32505413

复制
相关文章

相似问题

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