views:

319

answers:

7

What forces are at work keeping crufty old Make (with or without makefile generator tools) prominent as a build tool? Is it deficiencies in alternatives that keep them from being widely adopted, or insufficient publicity, or does something about Make keep it in place?

Despite Make's many weaknesses and difficulties dealing with large projects (e.g. see http://freshmeat.net/articles/what-is-wrong-with-make) it appears to still be more widely used than newer, improved alternatives such as Scons, Jam, Rake, Cook, and others.

Are there measurable benefits to the alternatives, or are the "market shares" due mostly to opinion and experience of team leaders?

+7  A: 

Ubiquity: I like Make because I can trust it will be available where I need it i.e. installed or easily installable on the target machine.

jldupont
+1  A: 

It's availability on a large number of platforms probably helps. If writing a product for multiple platforms, knowing it will always be there is a plus point. It's a pain to have to port your build tool to a new platform before you can build your own project.

Robert Christie
+4  A: 

Regarding your question, which forces are keeping make alive ...its the force of habit.

Alexander Gessler
yeah, "make" is sort of like BASIC or Fortran.
Jason S
+6  A: 

It's widely available, well documented, concise and powerful + best of all - no XML!.

I've been using it for close to 15 years and still haven't found something better. The coolest thing I've done with it is to have a master makefile generate makefiles for sub projects on-the-fly.

Chris McCauley
+1 for "no XML"!
Doc Brown
Thank you! The XML aspect of other, newer tools is a real issue for me. After 16 years of C/C++, I've been working with Ruby for 3 years and while I love that environment, Rake etc don't have anything over make. In the Java world, Ant just seems too verbose for what it does.
Chris McCauley
no XML but __tabs__
Alexandre Jasmin
+2  A: 
  • simplicity - easy to do simple things
  • ubiquity - some version is on your system
  • speed - fast enough for most things
  • expressive - pretty good match to the job
  • nonobvious complexity - mainly large projects expose problems
ergosys
Most of these qualities can be found in other build tools, too. Maybe just not all of them in any one other?
DarenW
@DarrenW - "ubiquity" can be found in no other build tool.
Chris Lutz
A: 

Hm, I never used make as a build system.

Other than that, it's a unique dataflow-programming language, where you can describe set of nodes, each serving specific purpose, describe their behavior, and let the manager handle and control the data flow between them.

Pavel Shved
A: 

We used scons on a relatively large project to replace make, and found that it was a reasonably flexible system, that allowed us to do some very necessary (but very unfortunate) hacking to get things to build the way we needed them to. Also, make is -strange-.

Scott Stafford