Subject: Re: [Boost-build] The future of B2?
From: Phillip Seaver (phil_at_[hidden])
Date: 2016-10-04 10:56:23
This is less of a suggestions response and more of a testimonial. :-)
I convinced my company to switch from the makefiles and visual studio
projects we were using to boost-build back in 2005, and, while there
have been some complaints about speed or difficulty figuring out some
edge cases, we haven't seriously talked about switching. (I would argue
against it, if we did)
I like the ideas brought up here, and I'm really glad to see enthusiasm
for the project.
For a while I've wanted to write code in BB to generate Visual Studio
projects that have all the includes, defines, and source code, so that
Intellisense and Visual Assist could scan all the appropriate files for
symbols. Right now, I have to do create makefile projects and figure
out which files to include. I just haven't had the time or expertise to
The major thing I've wanted to do is change it so that it builds
multiple source files with one command-line, like Visual Studio does. I
think it would be a major performance boost (for cases like mine, anyway
-- see below). I need to understand the underlying code better in order
to do that, though.
When we switched, we had programs and libraries used on SunOS, AIX,
Linux, SGI, Windows, and MacOS, if I recall correctly. We had n x m
makefiles per library and program. The two main reasons we switched
were that BB made it easier to abstract the platform differences than
makefiles and it had usage requirements. We got bitten so many times by
changing a define in one library makefile and not making it in the other
makefiles that used that library -- same thing with Visual Studio
projects: we would change a define in one project or not build using the
same library. It was a nightmare.
We currently have about 100 libraries (open-source and internal) and 50
programs (command-line and GUI) in our source tree, including wxWidgets
and boost and their dependencies, resulting in over 22000 targets. We
build mainly Linux, OS X, and Windows these days. Fortunately, with
Stephen's optimizations and progressively faster hardware, it doesn't
take terribly long. It's worth the several extra seconds to me, though.
I do most of my development (as others have said) on Windows.
Development and debugging in Visual Studio with Visual Assist is much
faster (for me) than vi, emacs, or Xcode. So having the ability to
generate projects (that call BB, unlike CMake projects), and some
integration into the IDE would be great.
I'm a little swamped right now, but that should ease up in a few months,
so I hope to be able to contribute to the project in the future, at
least by testing.
On 9/26/16 8:32 PM, Rene Rivera wrote:
> Recently I've been doing some cmake, yes I said cmake, for work. And
> this recent experience, and a quick survey of other current build
> systems, has convinced me that there's still nothing like b2. And by
> that I mean nothing that solves the same set of problems with a good
> set of abstractions. Although there are one or two that are moving in
> our direction. But alas, b2 is not widely used. And I can name many
> reasons as to why that might be. But I'd rather discuss where I want
> b2 to be in the future. And hopefully get us moving in a direction
> that will make b2 widely used.
> Let me start with something rather simple sounding.. What I want to be
> able to do with b2 in my day to day work & play-work (note that this
> is a royal "I" as I'm projecting what others have expressed over the
> * I want to be able to launch my IDE of choice and be able to build,
> debug, analyze, deploy, etc with b2 as my build system.. And to do
> that without the need to look at a command line.
> * I want to be able to use my choice of library package manager and be
> able to consume packages directly in b2.
> * I want to be able to use b2 to produce, i.e. specify, build, and
> deploy packages for my choice of package manager entirely in b2.
> * I want to be able to use my IDE of choice to configure all aspects
> of my b2 based project with zero or minimal reading of documentation..
> And especially zero reading of b2 code!
> * I want to be able to use current language features as soon as they
> are available, or shortly thereafter, without having to did into
> toolset command flags.
> * I want to be able to easily consume and produce b2 extensions.. It
> should be possible for me to browse on-line a collection of extensions
> and directly use them in my project. It should be possible to write my
> own extension and publish it for others to use.
> * I want to be able to consult the documentation and quickly find an
> answer for what I need to do with steps to follow. Preferably needing
> to only read *one* screen full of information.
> * I want to be able to manage my poly-language projects uniformly with b2.
> And I'm putting this one last intentionally..
> * I want all that to perform as expediently as possible when I hit the
> build (or whatever button) in my IDE.
> By no means is that the end of my possible wish list, but I'll stop
> there for the moment. But now for the really important part.. Do you
> agree that the above are features we should strive, and plan for? Do
> you have features that you think we should strive for in addition to,
> or instead of the above?
> And the really hard question.. What of the current b2 implementation,
> design, ecosystem, is getting in the way of reaching the above wishes?
> And if you dare.. What should we change to move forward?
> PS. Feel free to educate me as to the state of the Python port, deamon
> support, and anything else I may (or may not) be cognizant of that may
> be relevant. For both my enlightenment and that of others.
> PPS. For context, this post was also precipitated by my attempt to
> implement some b2 integration for Conan <https://www.conan.io> and
> CLion integration <https://github.com/grafikrobot/clion-boost-build>.
> -- Rene Rivera
> -- Grafik - Don't Assume Anything
> -- Robot Dreams - http://robot-dreams.net <http://robot-dreams.net/>
> -- rrivera/acm.org
> <http://acm.org/> (msn) - grafikrobot/aim,yahoo,skype,efnet,gmail
> Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost-build
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