与NDK捆绑在一起的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。
是否有一种干净的方法可以在链接时排除这个库?
发布于 2017-02-06 21:27:40
把我的评论变成回答
当我查看android.toolchain.cmake时,我看到ANDROID_STL_STATIC_LIBRARIES被转移到用于CMAKE_CXX_STANDARD_LIBRARIES的ANDROID_CXX_STANDARD_LIBRARIES。
所以我修改后一个应该可以解决你的问题。但这不是一个列表,而是分隔的空间,您应该这样做:
string(REPLACE "supc++" "" CMAKE_CXX_STANDARD_LIBRARIES "${CMAKE_CXX_STANDARD_LIBRARIES}")参考资料
https://stackoverflow.com/questions/42075863
复制相似问题