我有一个Application.mk和一个Android.mk文件。
Application.mk看起来像
NDK_TOOLCHAIN_VERSION := 4.8
APP_PLATFORM := android-9
APP_STL := c++_shared
APP_ABI := armeabi-v7a
我的Android.mk看起来像
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := foo1
LOCAL_SRC_FILES := foo1.cpp
# ... some other stuff ...
include $(BUILD_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := foo2
LOCAL_SRC_FILES := foo2.cpp
# ... some other stuff ...
include $(BUILD_SHARED_LIBRARY)
现在我想库libfoo1使用c ++ _ shared for APP_STL而libfoo2使用c ++ _ static for APP_STL。 (我知道,通常不应该relation between app_stl values with static and shared build android)。没有构建额外的项目并将库导入另一个项目是否有一种简单的方法?
答案 0 :(得分:3)
是的,有可能。进行以下更改:
# Application.mk
APP_STL := none
这样就可以禁用选择NDK构建系统的STL实现的内部逻辑。现在,手动指定要与之链接的C ++ stdlib实现:
# Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := foo1
LOCAL_SRC_FILES := foo1.cpp
LOCAL_SHARED_LIBRARIES := c++_shared
# ... some other stuff ...
include $(BUILD_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := foo2
LOCAL_SRC_FILES := foo2.cpp
LOCAL_STATIC_LIBRARIES := c++_static
# ... some other stuff ...
include $(BUILD_SHARED_LIBRARY)
$(call import-module,cxx-stl/llvm-libc++)