[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Make, make, make. . .
> Christian Reiniger wrote:
> > Its author bases the article on an example of a badly structured directory
> > hierarchy. It's true that in such a case (recursive) make has severe
> > problems, but once the source files are organized properly these problems
> > vanish and the point becomes moot.
> Tara Hernandez, ex-Netscape employee (I think she is in the Code Rush
> documentary that was made, she was at the first Mozilla party at least)
> and a few other people converted the build system of Mozilla to a
> non-recursive one with amazing improvements in build time.
But the point is that minimising build time is not usually the driving
force for organizing your directory structure and Makefile mechanisms.
Computers are damned fast at compiling things these days - and for most
projects, shaving a few seconds - or even tens of seconds from the build
time is an irrelevence.
For projects the size of Mozilla, you have unique problems - but 99%
of projects are tiny by comparison and getting the average user all
worked up over this is silly.
Organizing the file heirarchy to suit make is really the tail wagging the
dog. The file heirarchy is there to structure the code sensibly for
humans to understand - make's job is to build that heirarchy.
Perhaps the long-term solution for very large projects is to organize
your code how you need it, then write a tool that build an alternative
directory structure containing nothing but symbolic links - but optimised
The project I run at work has around a million lines of C++ code - organized
for human's benefit with no special thought of how to help make do it's stuff.
It compiles in about a half hour if you touch everything and well under a
minute if you touch a single file which has no other dependencies. That's
good enough for me.
Steve Baker http://web2.airmail.net/sjbaker1
email@example.com (home) http://www.woodsoup.org/~sbaker
To unsubscribe, e-mail: firstname.lastname@example.org
For additional commands, e-mail: email@example.com