News for hackers. Stuff that matters.
Re:Why Use Make by malkia on Sunday February 24, 2013 @05:16PM (#5276166)
Make is the assembly/C language of build system. Lots of other systems just generate makefile compatible files (qmake, cmake, premake, others), but often these fall into overly complex traps trying to explain everything both with simple unique words, and then clashing into these.

Make is very optimal at the stage it is, everything above or below it it's just not that optimal.

Re:Why Use Make by quotemstr on Sunday February 24, 2013 @07:00PM (#5276557)
> Make is very optimal at the stage it is, everything above or below it it's just not that optimal.

Right: GNU Make is at a local optimum for describing how to generate products based on rules and a dependency graph. I'd also wager it's close to a global optimum.

GNU Make is certainly closer to that global optimum than Boost's jam or the countless homegrown XML-based things I've seen over the years --- make is powerful, but despite that power, simple things look simple and are simple to write. In other systems, either simple things are hard to write or the system itself is so simple than it's not powerful enough to describe what I want done.

Re:Why Use Make by mercurial on Monday February 25, 2013 @07:34AM (#5278608)
Well... If by XML-based things you are thinking of Maven, they're not really at the same level. Maven is much more higher-level, and is fully declarative, which is both a blessing and a curse. I would not describe it as a general-purpose build system, it's really made for the Java ecosystem, but in this context, it works well for a majority of projects, because they can follow the rails. And it does handle out of the box automated retrieval of dependencies, which is way outside the scope of make.

It has its hear in the right place, though. High-level build systems should strive to be as declarative as possible. It's the rest of the design which is problematic :)

Re:Why Use Make by zoobert on Monday February 25, 2013 @08:02AM (#5278730)
I think he was more talking about tools like Apache Ant.
Re:Why Use Make by sokrates on Sunday February 24, 2013 @07:22PM (#5276632)
If Make is a local optimum and close to a global optimum, it by definition is the global optimum.
Re:Why Use Make by quotemstr on Sunday February 24, 2013 @07:33PM (#5276668)
Say you have a city with two skyscrapers on opposite sides of town, one 49 stories high and the other 51 stories high. When you're at the top of the 49-story building, you're at a local maximum of height and close to the global maximum, but you're not exactly a short gradient-ascent jaunt away from the global maximum.
Re:Why Use Make by philwelch on Sunday February 24, 2013 @08:19PM (#5276780)
Sure, but how much work are you going to put in to go up two floors? Local optimum + close to a global optimum means there's not much cost benefit in changing.
Re:Why Use Make by joeyo on Sunday February 24, 2013 @08:56PM (#5276872)
Exactly. That's what Make is still used.
Re:Why Use Make by atamyrat on Sunday February 24, 2013 @07:37PM (#5276678)
Not really, depends on definition of "close", i.e. how you measure distance. If closeness means distance in search space, then you're right, but it also could mean local vs global are close in value being optimized, but they are located far from each other in search space.
Re:Why Use Make by dllthomas on Sunday February 24, 2013 @07:31PM (#5276661)
Cute, but that depends how close...
Re:Why Use Make by dekken_ on Monday February 25, 2013 @05:08AM (#5278148)
Which "homegrown XML things"?
Re:Why Use Make by eliben on Sunday February 24, 2013 @05:26PM (#5276200)
As the assembly language of build systems, I agree that Make works well. But there, IMHO, its utility ends.
Re:Why Use Make by Game_Ender on Sunday February 24, 2013 @07:31PM (#5276660)
I would say if fares rather poorly when you compare it something like ninja (http://martine.github.com/ninja/) which is made to be generated by tools Gyp or CMake. I have used the CMake+ninja combination on large projects and it lives up the hype.