Android NDK:是否可以为多个库切换 APP_STL?
Android NDK: Is it possible to switch APP_STL for multiple libraries?
我有一个 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 为 APP_STL 使用 c++_shared,而 libfoo2 为 APP_STL 使用 c++_static。 (我知道,通常不应该这样做relation between app_stl values with static and shared build android)。有没有简单的方法不用构建额外的项目并将库导入另一个项目?
是的,这是可能的。进行以下更改:
# Application.mk
APP_STL := none
这样您就可以禁用选择 NDK 构建系统的 STL 实现的内部逻辑。现在,手动指定您想要 link 的 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++)
我有一个 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 为 APP_STL 使用 c++_shared,而 libfoo2 为 APP_STL 使用 c++_static。 (我知道,通常不应该这样做relation between app_stl values with static and shared build android)。有没有简单的方法不用构建额外的项目并将库导入另一个项目?
是的,这是可能的。进行以下更改:
# Application.mk
APP_STL := none
这样您就可以禁用选择 NDK 构建系统的 STL 实现的内部逻辑。现在,手动指定您想要 link 的 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++)