NDK bundle 的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吗?
最佳答案
把我的评论变成答案
当我查看 android.toolchain.cmake
时,我发现ANDROID_STL_STATIC_LIBRARIES
已传输到ANDROID_CXX_STANDARD_LIBRARIES
所使用的CMAKE_CXX_STANDARD_LIBRARIES
中。
所以我修改以后应该可以解决您的问题。但这不是列表,而是用空格隔开,您应该执行以下操作:
string(REPLACE "supc++" "" CMAKE_CXX_STANDARD_LIBRARIES "${CMAKE_CXX_STANDARD_LIBRARIES}")
引用
CMakeCXXInformation.cmake