Today I had to compile a C project with over 200
Instead I downloaded and used "Cons" - a little known perl utility for software construction. The "Construct" file became:
$cons = cons->new(
CFLAGS => '-O2',
LIBS => '-levent',
);
$cons->Program("dnsserver", <*.c>);
Default(qw(dnsserver));
So I went digging to see why the project hadn't been updated in a long time. Turns out the author didn't like perl OO so just stopped.
There's now an SCons project in Python that's getting a lot of attention, and owes its history (and some of its syntax) to Cons.
Perhaps it's time for a back-port to perl. I used Cons instead of makefiles to get away from indentation being significant!
Rake (Score:1)
I’d rather write something more akin to Ruby’s Rake in Perl. There’s TinyMake [cpan.org] on CPAN, but it’s too limited and I didn’t like the code. I’ve already sketched it out a little but didn’t start yet.
Re: (Score:2)
Perhaps I've missed something though - I only went through the tutorial.
Re: (Score:1)
And that’s awful? Sure, it doesn’t do automatic dependencies, but Rake is Ruby and Rakefiles equally are Ruby – so unlike with Make, implementing arbitrarily complex functionality either in the build script or as a subclass of or some form of plugin for the engine is straightforward.
Cons’ architecture so fixated on one optimising for the compilation of C code that you can’t reasonably use it for anything else. If you want to repurpose it in any way, you have to hack on Cons
Re: (Score:2)
Re: (Score:1)
More or less, yeah. I have no beef with the featureset of Cons, just with the things absent from its featureset.
F.ex., I’ve wanted to write a build script for my website; it’s currently powered by
makeand libxslt’sxsltproctool. But I’d like to be able to use XML::LibXSLT instead, register a few XSLT extension fuctions right inside the build script, along with one or two functions to drive transforms, and then use those in my task recipes.If I were using Ruby and Rake, that wou
Re: (Score:2)
I *think* Scons provides all that (and more).