From: Reece Dunn (msclrhd_at_[hidden])
Date: 2006-04-26 12:44:22
Philip Craig wrote:
> > Phillip Seaver <phil_at_[hidden]> wrote:
> >> boost build can't be used for serious projects in msvc++ until all of
> >> pch and -jn (where n > 1) and pdb are working.
> >> The performance hit for switching to boost build is just too great
> >> without these things.
> > Sure, it can. :-) I'm currently building 9 programs (1 COM object and
> > 2 Windows GUI programs) on Windows
> Ok fair point. If you need cross platform that can outweigh the
> performance hit. But if you don't (and many don't) then boost build is
> not in the ballpark for windows only development. I wish it was.
I know that there are many issues with the current PCH support on the
msvc compiler with BBv2, but getting it to support *that much* required
major effort. This is because you know how you *want* PCH support to
work where it is "nice and simple(TM)" and then you have how MS decided
to implement it. I am not criticising MS on their decisions, it is just that
the two are completely different, making it very hard to get it working
right on BBv2 as it stands.
Regarding PDB generation and copying, this is one of the things I intend to
look into because it is something that I will find useful.
IIUC, the -jn option is parallel builds. I don't understand how that works or
how PCHs/PDBs work in that kind of environment.
As for not being able to compile Windows GUI programs - I am using it to
build all my home projects. That includes builds of XPDF/Poppler, Scintilla,
HTML Tidy and a fairly large GUI app that uses all of these. I haven't
experienced any major problems with rebuilding them, although I haven't
done any extensive performance comparisons.
Looking forward, I don't think that BBv2 in its current incarnation has
the right support for pre-compiled headers. I think that PCH support
should be at a lower level - actually built into the core functionality.
There are also several things that I would like to see BBv2 or BBv3
support. With compilers, you can get them to generate preprocessed
output and generate the assembly instead of object code. This is not
currently supported in BBv2. The chain would look something like:
CPP -> PreProcessed-CPP -> ASM -> OBJ
Also, it is not possible to support different build models (e.g. Java/C#
compile everything in one pass) or support orthogonal toolsets. What
I mean by orthogonal toolsets is performing a build that uses msvc for
C++ compilation and WiX for MSI/Installer generation.
My current thinking is to work out what is needed by all of these and
how to make them fit into the BBv2 view of the world, but rework
BB (for bbpy?) to add direct support *from the ground up* rather
than providing a hack that uses several kludges to get these working
(like is currently done with PCH). This will be easier to do in Python
where we are not restricted by the action/rule model from Jam and
have a richer *native* set of types.
Express yourself instantly with MSN Messenger! Download today it's FREE!
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