首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在过渡到C++11期间管理外部库(例如boost)

在过渡到C++11期间管理外部库(例如boost)
EN

Stack Overflow用户
提问于 2013-02-20 21:03:10
回答 1查看 693关注 0票数 18

我想把我当前的项目移到C++11上,代码都是用clang++ -std=c++0x编译的。这是最简单的部分:-)。困难的部分是处理外部库。不能依赖于将自己的C++11对象与不是用c++11编译的外部库相链接(请参阅http://gcc.gnu.org/wiki/Cxx11AbiCompatibility)。例如,Boost当然需要重建(Why can't clang with libc++ in c++0x mode link this boost::program_options example?)。我有我使用的所有外部库的源代码,所以理论上我可以(有点痛苦地)用C++11重新构建这些库。然而,这仍然给我留下了一些问题:

在C++03/C++11混合环境中开发:我有一些使用C++03的旧项目,需要偶尔进行维护。当然,我希望将它们与现有版本的外部库链接起来。但是对于我当前的(和新的)项目,我希望链接到我重新构建的C++11版本的库。我如何组织我的开发环境(目前是Ubuntu12.04和MacOSX10.7)来应对这个问题?

我假设很多开发人员都会遇到这个问题。它不会消失,但我还没有找到推荐的和普遍认可的解决方案。

部署:目前我在云中部署到Ubuntu12.04 LTS服务器上。经验导致人们(在可能的情况下)依赖于linux发行版提供的标准包(例如libboost)。如果我将当前的项目迁移到c++11,我的理解是我将不得不构建我所使用的外部库的自己版本。我的猜测是,在某一时刻,这种情况将会改变,他们将成为具有C++11兼容性的库包的“标准”版本。有没有人知道什么时候会发生这种情况?大概这也需要一个标准的解决方案来解决上面提到的问题--在同一个平台上同时存在C++03库和C++11库。

我希望我错过了一些基本的东西,这样这些感知到的问题就会在适当的信息中消失!我是不是太早迁移到C++11了?

更新(2013-09-11):与macports相关的讨论:https://lists.macosforge.org/pipermail/macports-users/2013-September/033383.html

EN

回答 1

Stack Overflow用户

发布于 2013-03-02 01:04:35

您应该使用您的配置工具链(例如,autotools)为您的目标部署“正确”配置您的构建。您的配置测试应该检查与ABI兼容的C++11二进制文件,并指示链接器在检测到时首先使用它们。如果不是,则可以选择失败或回退到C++03构建。

对于安装在单独的并行目录树中的C++11第三部分库,这并不是绝对必要的。库版本控制已经存在很长一段时间了,它允许您将不同的版本并排放置在系统上或任何您想要的地方,同样也是基于配置。

这看起来可能很混乱,但configure工具链就是为处理这些混乱而设计的。

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

https://stackoverflow.com/questions/14980544

复制
相关文章

相似问题

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