On 2012-04-04 10:19, Leandro Lucarella wrote:
Fair enough. But I guess that's just personal taste, I really like Make syntax better (the only thing that annoys me is $(variables) and $(function call) syntax, that could be definitely better).But to me this: file "prog" => ["a.o", "b.o"] do |t| sh "cc -o #{t.name} #{t.prerequisites.join(' ')}" end Looks much complicated (and with way much more syntax overhead) than this: prog: a.o b.o cc -o $@ $^
Sure, I guess makefiles both have their pros and cons. One of the advantage is that you can invoke shell commands. This is at the same time a disadvantage, that makes the language syntax complicated. In my opinion it's just too many symbols.
When you need to do more complicate stuff that requires if-statements and functions then I think Ruby is superior.
But it might be as I've said, too many people uses Make as a build system and not a tracking system.
BTW, I took a look at Rake and it lacks a lot of Make features (well GMake at least, I usually stick to GMake because it's usually available anywhere), just for the command-line: --jobs (!), --question, --what-if, --always-make, --keep-going. Also I didn't see anything about the secondary expansion, rebuilding the Makefile itself, target-specific variables, implicit rules, pattern rules with multiple targets, .... Also for me using a declarative language instead of a imperative one is a better choice for this kind of applications.
I've actually never done a direct comparison. It just the feel I've got when I've used the tools.
-- /Jacob Carlborg
