[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: libgtk-dev bug?



Raul Miller <rdm@test.legislate.com> writes:

> Make is pretty easy to work with as long as you work with it as a tool
> for managing many files in a directory.  [For example, it's often
> better to put scripts in separate files.]

Well, I'd like to be able to do things like change variables at
different points during the build (in the makefile), and have the
results propagate, and its idea of a "macro" is nearly useless.  It
should have functions with arguments.  Further, for really big
projects that build multiple object files from a given source file for
different binaries, Make is a PITA.

Anyway, I've been annoyed with make for a while, and recently, when I
saw the Debian "cons" package, I checked it out.  It seems (at first
glance, anyway) substantially superior to make.  Among other things:

  - showed %50 build time improvement on ~1500 file project converted
    to cons.  Partially because it doesn't have to rely on recursive
    invocation to handle large multi-dir projects.

  - the language of the Conscripts is perl, so you have *real*
    variables, etc. rather than that inscrutable make expansion mess.
    (Not that perl is my favorite language, but it's suited for this,
    and it's far better than make's syntax.)

  - No more tabs (visibly identical but semantically different
    delimiters are *evil*)

  - md5sums for computing build targets.  The sums even include the
    command used to build the relevant file, so they notice
    *everything*.  This would be like including a dependency on the
    Makefile if you were using make, but it's much more accurate.

  - Automatic handling of C code (and others) recursive "#includes".
    You don't have to do the "depend" step, or use a complex gcc
    command.

  - Automatic handling of builds in directories other than the source.
    I think it just builds a shadow tree with links and automatically
    updates the shadow tree(s) when you modify the source tree.

  - Supports build context objects so you can keep several around and
    build different components under different defaults.

> That said, even using "evaluate once" won't cure a makefile which
> computes configuration information on the fly.  Make wants to work
> with state information in files, not state information that it can't
> get a timestamp on.

Right cons's md5sums handle this.

FWIW.

-- 
Rob Browning <rlb@cs.utexas.edu> PGP=E80E0D04F521A094 532B97F5D64E3930


--  
To UNSUBSCRIBE, email to debian-devel-request@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org


Reply to: