强制 ndk-build 包含 C++ 库

Forcing ndk-build to include C++ libraries

我有一个应用程序,其中所有组件首先组装为静态库,然后将这些库重新打包为共享库。所以执行 include $(BUILD_SHARED_LIBRARY) 的模块有空 LOCAL_SRC_FILES。组件的布局和组合方式很有意义,必须保持这种方式。

但是,只有在 LOCAL_SRC_FILES 中有 C++ 源代码(通过扩展识别,可以用 LOCAL_CPP_EXTENSION 覆盖)时,才会添加 APP_STL 的库。所以标准库没有被添加,最终对象也没有 link,因为组件库确实需要它。

有没有办法强制 NDK 包含它?

有一个 undocumented 变量 LOCAL_HAS_CPP 可以做到这一点:

LOCAL_HAS_CPP := true

虽然相对较新。它在最新的 NDK r16b(截至 2018 年 3 月)中,但在我们目前使用的 r12b 版本中没有。