5 ms·
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
by malkia 14y ago
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.
- eliben 14y agoAs the assembly language of build systems, I agree that Make works well. But there, IMHO, its utility ends.
- Game_Ender 14y agoI would say if fares rather poorly when you compare it something like ninja (http://martine.github.com/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.
- quotemstr 14y ago> 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.
- sokrates 14y agoIf Make is a local optimum and close to a global optimum, it by definition is the global optimum.
- dllthomas 14y agoCute, but that depends how close...
- quotemstr 14y agoSay 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.
- atamyrat 14y agoNot 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.
- deleted 14y ago[deleted]
- dekken_ 14y agoWhich "homegrown XML things"?
- mercurial 14y agoWell... 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 :)
- zoobert 14y agoI think he was more talking about tools like Apache Ant.