首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么是Boost Jam,Jam值得迁移吗?

什么是Boost Jam,Jam值得迁移吗?
EN

Stack Overflow用户
提问于 2009-02-04 16:49:17
回答 4查看 8.8K关注 0票数 18

什么是Boost Jam,Jam值得迁移吗?

我知道jam是由perforce构建的系统,但是我不确定boost jam和常规jam有什么不同。

我也希望在SO社区中能有人使用过它,也许可以强调一些差异和/或好处。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-02-08 22:57:39

就我的目的而言,它只是为你构建boost库的东西,我不知道你可以用它做其他的事情,所以我不明白你迁移到它是什么意思。很抱歉,我不知道什么是普通的果酱。由于没有其他人提供答案,我只提供我对它的理解。

Boost是一个用于C++的类和函数的集合,可用于各种任务。boost的类和函数被分组到库中。一些库的所有代码都在头文件中,只需使用#include预处理器语句即可使用,而其他库(如文件系统或正则表达式库)则将其部分实现放在.cpp文件中。

编译这些.cpp文件可能需要很长时间(根据您正在编译的内容,大约需要30分钟),如果您每次想要重新编译程序都要花费半个小时,这将是一件非常痛苦的事情。所以他们所做的只是那些部分存储在.cpp文件中的库,你可以将它们预编译成.lib文件,这就是boost jam的目的。这意味着你只需要花半个小时编译一次,从那以后你再也不用等待半个小时了。

但是,正如您可以想象的那样,每个boost库都由许多cpp文件和许多头文件组成,并且每个文件都有许多不同的版本(调试版本、发布版本、多线程等),因此自己编译boost库并不是一个简单的过程。这就是boost jam的用武之地。您向它发出编译这些库的命令,然后它向编译器发出所有命令,在编译器结束时,您将拥有一个预编译的.lib文件集合,每个文件对应于每个库的不同风格。头文件以某种方式告诉链接器要包含哪些库文件,因此如果您设置了正确的路径,那么正确风格的预编译.lib文件将自动链接到您的程序,从而节省您30分钟的编译时间。

你可以通过查看这个页面来查看boost jam需要编译哪些库,哪些库不需要:http://www.boost.org/doc/libs/1_37_0 -如果一个库不需要lib文件(因此不需要你首先处理boost jam ),它将显示"Build & Link: Header only“,而如果一个库确实需要预编译库文件,它将显示"Build & Link: Automatic linking”。

此外,如果您是在Windows上,您可以下载预编译的.lib文件,这样您就不必使用boost jam。要做到这一点,您应该做的是转到www.boost.org页面,转到入门部分,并一直按照它进行操作,以确保所有设置都正确。该页面的windows版本上的一个链接告诉您在哪里可以找到预编译的.lib文件。

票数 5
EN

Stack Overflow用户

发布于 2009-09-25 04:12:20

我使用Boost Jam进行跨平台的C++开发。我选择它是因为

  • 我希望我的代码可以在任何地方构建Boost构建,
  • 它使用一种相对简单的声明性语言来指定如何构建目标,
  • 它可以在一个调用中构建所有不同风格的二进制文件(例如,调试与发布,32位与64位,msvc与gcc),并且在构建声明中与风格相关的异常绝对最少。

您可以使用特定于口味的设置来优化通用规则,而不是为每个口味排列编写单独的规则。语法并不完全是我所选择的,但是要习惯它并不是太难。

本文将Boost Jam与CMake、SCons和Eclipse CDT:http://syrcose.ispras.ru/2009/files/04_paper.pdf进行了比较

我的理解是,Boost Jam是由Boost社区维护的Perforce Jam的一个分支,Perforce Jam不再积极维护( release notes在2003年4月进行了最后一次更新)。

当然,如果你不关心跨平台开发,还有更容易的方法,就像其他人在这里提到的那样。就我个人而言,我一直想重温一下Eclipse CDT;5年前它似乎还不能使用,但我听说它已经走了很长一段路。

票数 28
EN

Stack Overflow用户

发布于 2009-03-18 14:47:46

正如您所说,Boost Jam是一个构建系统,可以独立于任何其他boost库使用。我对Perforce Jam一无所知,但据我所知,Boost jam非常相似,而且大部分都是兼容的。

主要区别在于Boost Jam通常附带Boost Build,这是一组为常见任务设计的jam规则,例如编译库、运行单元测试、创建doxygen文档等。

与其他构建系统相比,Boost Jam/Boost build设计用于轻松编译不同的变体。因此,如果您想要将编译设置从调试更改为发行版,或者从单线程更改为多线程,它会自动确定许多更改。

缺点是语法非常繁琐,而且在boost网站之外,没有好的文档。但我认为Perforce Jam在这方面也一样糟糕。

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

https://stackoverflow.com/questions/512202

复制
相关文章

相似问题

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