首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Android构建中重写android.toolchain.cmake

在Android构建中重写android.toolchain.cmake
EN

Stack Overflow用户
提问于 2017-02-06 19:34:51
回答 1查看 688关注 0票数 1

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

代码语言:javascript
复制
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中,我尝试过

代码语言:javascript
复制
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。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-06 21:27:40

把我的评论变成回答

当我查看android.toolchain.cmake时,我看到ANDROID_STL_STATIC_LIBRARIES被转移到用于CMAKE_CXX_STANDARD_LIBRARIESANDROID_CXX_STANDARD_LIBRARIES

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

代码语言:javascript
复制
string(REPLACE "supc++" "" CMAKE_CXX_STANDARD_LIBRARIES "${CMAKE_CXX_STANDARD_LIBRARIES}")

参考资料

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42075863

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档