Subject: Re: [Boost-build] bjam 4.0.. in C++
From: Artyom (artyomtnk_at_[hidden])
Date: 2010-05-27 15:19:10
> A colleage recently attended BoostCon and came back with the
> impression that Boost.Build would be replaced by Kitware's CMake for
> Boost's primary build system.
I want to add my $0.02 to CMake vs BBv2 Discussion.
But before I begin I need to say several words.
I don't really like CMake and I think CMake as many things to improve.
I do not see CMake as perfect build system.
So far I used 3 build systems for my projects:
What I was always looking in good build system:
1. Easy and simple way to make common tasks
2. Relatively easy way to do non-obvious tasks.
Not going to details, I was happy with auto* as almost every task
I could need was already implemented, and generally implemented well.
So I could find how to do something in hundreds of tutorials and if I
couldn't there always have being examples I could learn from.
As all you know auto** has many issues, not taking about lack of
Then I moved to CMake (because I needed MSVC). It has many problems
mostly due to lack of common tasks:
- Gettext support
- Bugs like this one: http://art-blog.no-ip.info/cppcms/blog/from/49
But also had some very good sides I liked.
But finally I managed to get it work and converted quite big cross
platform projects to CMake and gained MSVC support I needed.
At the end I had written Boost.Locale. I submitted it for formal review
but... Without BBv2 files.
- The documentation just was not existing. I couldn't find
documentation even simple tasks.
- There is absolutely no support of simple tasks like library search,
that exist in **any** build system.
- The syntax is totally unreadable and very error prone (with all ,,,
The biggest BBv2 issue is not bjam, language, speed or even documentation.
It is all together, and it is called **maturity**
BBv2 was designed for Boost and written solely for Boost purpose and
serves mostly Boost.
Autotools and CMake exist for many years and most important they
adopted by **many** projects as ultimate build system.
As more projects use them they support more features and become more
polished, improved and useful.
Of course I don't suggest moving to auto** but CMake today is
most mature build platform that supports MSVC compiler.
So the question is: Does boost community need to reimplement 1001
features (Volodya mostly) already implemented in CMake or just outsource
build system to Kitware as they probably developed quite a nice product
and they support and improve it.
They will listen to Boost community as I think for Kitware Boost using
CMake as primary build system is more important then even Boost
> Apparently, someone asked "who uses
> Boost.Build in non-Boost
> programming" and very few people raised their hands.
> On the other hand,
> after the question "who uses cmake in non-Boost packages"
> and several people
> raised their hand.
Just simple test. I took Debian's Source packages list (sid) and
run simple search how many packages depend on various build systems:
$ grep -E '^Build-Depends:.* boost-build' Sources | wc -l
$ grep -E '^Build-Depends:.* scons' Sources | wc -l
$ grep -E '^Build-Depends:.* cmake' Sources | wc -l
$ grep -E '^Build-Depends:.* autotools' Sources | wc -l
To be honest... This says something: developers do not choose
boost-build, and probably there are very good reasons for this.
> I understand that Kitware is really pushing
> hard to get Boost to move
> to CMake and several others have jumped on the CMake
Maybe Boost community should take the offer.
Boost-Build list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk