Boost logo

Boost-Build :

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: - Autotools - CMake - Boost.Build 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 MSVC support 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. Why? - 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 ,,, there) 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 having CMake. > 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 1 $ grep -E '^Build-Depends:.* scons' Sources | wc -l 68 $ grep -E '^Build-Depends:.* cmake' Sources | wc -l 327 $ grep -E '^Build-Depends:.* autotools' Sources | wc -l 2473 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 > bandwagon.  Maybe Boost community should take the offer. Artyom


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