在Android cmake build中覆盖android.toolchain.cmake

时间:2017-02-06 19:34:51

标签: android c++ android-ndk cmake

与NDK捆绑在一起的cmake是默认使用的cmake,但它定义了很多选项。其中之一是 -

elseif(ANDROID_STL STREQUAL gnustl_shared)
    set(ANDROID_STL_STATIC_LIBRARIES
        supc++)
    set(ANDROID_STL_SHARED_LIBRARIES
       gnustl_shared)

现在,我想使用gnustl_shared,但没有supc ++,我无论如何都找不到它。从android.toolchain.cmake手动删除它对我有用。 但我不想在每台机器上编辑ndk工具链cmake文件。 在我的应用程序的cmakelists.txt中,我尝试了

list(FILTER ANDROID_STL_STATIC_LIBRARIES EXCLUDE REGEX ".*supc.*")
list(FILTER CMAKE_CXX_STANDARD_LIBRARIES_INIT EXCLUDE REGEX ".*supc.*")

但每次,在生成的build.ninja文件中,我都会在LINK_LIBRARIES中看到libsupc ++。a。

链接时是否有一种干净的方法可以排除这个lib?

1 个答案:

答案 0 :(得分:2)

将我的评论转化为答案

当我查看android.toolchain.cmake时,我发现ANDROID_STL_STATIC_LIBRARIES已转移到用于ANDROID_CXX_STANDARD_LIBRARIES的{​​{1}}。

所以我修改后来应该解决你的问题。但这不是一个列表,它的空间是分开的,你应该这样做:

CMAKE_CXX_STANDARD_LIBRARIES

<强>参考