10

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?

Craig McQueen
  • 41,871
  • 30
  • 130
  • 181
DarenW
  • 16,549
  • 7
  • 63
  • 102
  • 2
    "Shipping is a feature". Once something becomes "standard", it takes a lot of effort to switch to something new - even if it offers some advantages. Likely, projects already using `make` will *never* switch - and there's very little incentive to have developers in the same software house using two entirely different build tools. – Anon. Jan 13 '10 at 20:15
  • 1
    Plain make isn't used by that many large projects. The autotools are the ubiquitous incumbent, providing portability and flexibility. – Tobu Jan 13 '10 at 20:20
  • Have you looked at the federal government lately. It's easy to see why things never progress if you use Uncle Sam as an example. – orokusaki Feb 10 '10 at 02:48

8 Answers8

9

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
  • 93,734
  • 56
  • 203
  • 318
7

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
  • 25,824
  • 8
  • 48
  • 65
  • 2
    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 Jan 13 '10 at 21:05
5

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

Alexander Gessler
  • 45,603
  • 7
  • 82
  • 122
  • yeah, "make" is sort of like BASIC or Fortran. – Jason S Jan 13 '10 at 20:33
  • For some definition of "like", which doesn't include running with a standard command, on a standard file format, building and deploying your project, in parallel, on anything from a standard unix box, to a modern supercomputer, to a 1980s-era home computer. –  Dec 13 '13 at 21:16
4
  • 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
  • 47,835
  • 5
  • 49
  • 70
1

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
  • 20,177
  • 8
  • 42
  • 37
1

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.

P Shved
  • 96,026
  • 17
  • 121
  • 165
1

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
  • 43,764
  • 28
  • 129
  • 177
  • Yeah, it seems all alternatives to make, and make itself, need some hacking on most larger projects. Since asking the question, I've started working on a complex projects using scons that converted to cmake. Cmake is less trouble, less hacking but still, some. And strangeness is a property not absent from any software tool or language, and I'm not sure if that's good (preventing boredom) or bad (confusion, surprising errors). – DarenW Apr 08 '11 at 16:22
0

i think what would have to occur to see a big shift to another tool, is 1st the tool would have to be created.... that is significantly better. and to affect change, either one of the linux distros or one of the major packages would have to switch to it and probably keep the old one arround for compatibility. i would envision that the new build tool would be capable of generating the legacy makefiles. linux already demonstrated how well he can solve the source code control system with git. i have a pretty good hunch he could come up with something pretty cool and tie in with git.

Kramer
  • 174
  • 3
  • 5