使用ndk-build all构建预构建的静态库

时间:2013-07-21 19:48:10

标签: android build android-ndk makefile

我遇到了构建静态库的ndk-build脚本的问题。

问题是我们的应用程序更大的构建脚本包含了这个脚本,该脚本会被ndk-build all调用

静态库的构建脚本如下所示:

# LoadBalancing-cpp

LOCAL_PATH := $(call my-dir)

all_static_libraries = common-cpp-static-prebuilt \
                       photon-cpp-static-prebuilt

lib_suffix := ${APP_OPTIM}_android_${APP_ABI}

lib_loadbalancing_cpp_static_name := loadbalancing-cpp-prebuilt-static_${lib_suffix}

include $(CLEAR_VARS)
LOCAL_MODULE            := loadbalancing-cpp-static-prebuilt
LOCAL_SRC_FILES         := lib$(lib_loadbalancing_cpp_static_name).a
LOCAL_STATIC_LIBRARIES  := $(all_static_libraries)
include $(PREBUILT_STATIC_LIBRARY)

$(call import-module,common-cpp-prebuilt)
$(call import-module,photon-cpp-prebuilt)

问题是,构建静态库需要LOCAL_SRC_FILES指向单个值(库的路径),但是在这种情况下使用ndk-build all调用时,它将包含多个值(因为lib_suffix将指向所有可用的架构。)

有没有办法使用ndk-build all构建此文件?

1 个答案:

答案 0 :(得分:1)

您可以使用由ndk-build管理的 TARGET_ARCH 变量:

lib_suffix := $(APP_OPTIM)_android_$(TARGET_ARCH)

......等等。

基本上,ndk-build会多次“调用”你的Android.mk文件,每次都设置 TARGET_ARCH 变量。