Boost logo

Boost-Build :

Subject: Re: [Boost-build] Use BB to generate visual studio projects?
From: Rene Rivera (grafikrobot_at_[hidden])
Date: 2010-04-19 12:02:10


On 4/19/2010 10:29 AM, Christian Holmquist wrote:
> One of the reasons for using the IDE, is that it's significantly faster to
> compile with. Running bjam on a project (even with only one .cpp test file)
> which depends on a couple of compiled boost libs (serialization, thread,
> system), takes very, very long time. I'm probably doing something wrong, and
> I actually wonder how people work with bjam in practice.

Yes, it's slow, compared to other build systems. But the abstraction and
flexibility comes at a cost. Although as it stands many improvements are
possible even with the current code. But even more are possible with a
rewrite, like the Python port is doing.

> To me, it spends
> too much time in dependency analysis.

Performances measurements have repeated shown that the dependency
analysis is not the slow part.

> Another reason for the IDE to know about all my files involved, is to allow
> other crucial tools such as Incredibuild and Visual Assist to do their work.

Very good point. Although it's not impossible to get those tools to work
with/through bjam, the tools are targeted at the value market of VS
users. And hence that tends to be the most convenient use case.

Another point towards generating project files, which is the one I'm
interested in, is to be able to hand clients snapshots of projects that
they can immediately load up in their environment (although I'm more
likely to want an Xcode project generator).

> Without them, my efficiency is about zero nowadays.
>
> Here's what would be optimal to me
> 1) BB always contains the 'master' project, there are no visible vcproj
> files in the SCM.
> 2) When about to work on some project, generate the vcproj files for that
> project, and optionally for all projects (that needs compilation) it depends
> on.
> 3) When done, submit cpp, hpp and jam files, and throw away the vcproj
> files.

Makes sense. And it's not impossible. But mapping the multi-variant
nature of BB to VS project files is not straightforward. And the least
work I could think of is to generate multiple VS projects for each
variant you ask for from BB. The way I can think of doing this is to
declare a project target of some sort ("ide", or "proj"). The target,
when generated/built, would have to traverse all the internal BB targets
and generate output accordingly. Or it could be given a set of specific
targets, as its sources, to generate build instructions for (this way
you get some control of what the output contains).

Anyway.. I'd be interested in helping out with doing some of this since
it's of personal interest.

-- 
-- Grafik - Don't Assume Anything
-- Redshift Software, Inc. - http://redshift-software.com
-- rrivera/acm.org (msn) - grafik/redshift-software.com
-- 102708583/icq - grafikrobot/aim,yahoo,skype,efnet,gmail

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