我正在努力更好地理解Android.mk。我现在正在使用一个库来构建一个项目,我的Android.mk如下所示:
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解析器进行解析,然后在声明和解析每个模块之后维护一些“模块”空间,这与实际的解析空间是分开的。这是一个完全的猜测,但我有一些困难,找到一个资源,涵盖什么发生在后台。
发布于 2016-04-13 06:59:59
当前目录在ndk的整个生命周期中没有改变--构建,即使有许多模块、嵌入式Android.mk文件等等。这就是为什么$(SUPERPOWERED_PATH)将与所有模块保持相关性(如果使用$(LOCAL_PATH)或其他*make*变量,则不会如此)。
CLEAR_VARS的作用是重置变量modules-LOCALS中列出的所有make变量。Here是如何自定义此行为的一个示例。
发布于 2016-04-13 05:27:28
SUPERPOWERED_PATH在该行中设置jni文件夹路径的当前路径,并在
特殊格式
C:/Users/Text/Desktop/TimeStreach/app/src/main/jni
https://stackoverflow.com/questions/32505413
复制相似问题