3 ms·
Make has so much legacy cruft handling, people just moved to other systems that are simpler. Most developers don't even know most of the features make, and peo
by andrewchambers 12y ago
Make has so much legacy cruft handling, people just moved to other systems that are simpler.
Most developers don't even know most of the features make, and people don't really want to learn such an old program through and through.
- sudowhodoido 12y agoI think that avoiding complexity in the build system is the priority rather than avoiding a product that has cruft in it. Make can be simple, elegant and productive even on large projects if you think before you do something. For example SCons, CMake suffer from the same number of problems that manifest themselves differently. This comes from many years of experience of watching people hang themselves with make, then hang themselves with the next best thing, then hang themselves with another thing, then say "all build systems are shit" and write their own which is inferior to make to start with. The problem is always the product, not the build tool. All the useful features of make can be learned in a couple of hours. For ref, I'm going to get shot about "cross platform builds" and stuff in reply to this comment. You're right. Use nmake on windows and make on *nix platforms.
- norswap 12y agoMmh, which build system do you think are simpler than Make? Make has a lot of quirks, but at its core it is a simple system.
- hendzen 12y agoCmake/ninja is becoming the standard for new C++ projects.
- davexunit 12y agoCmake is a fucking nightmare to work with. Autotools are light years better and more robust than cmake.
- bodyfour 12y agoI have a love/hate relationship with cmake. Writing non-trivial functionality in cmake's language is possible but you're fighting the language the entire way. It would have been so much better if they'd just started with something like Lua and extended it instead of building their own barely-adequate scripting language. Some of the grossest code I've ever written is in cmake macros. On the other hand, the results you get from cmake are fantastic. Want to use ninja instead of make? Just pass a compile flag. Need Visual Studio project files? No problem. Xcode? Kdevelop? You're covered. Honestly I couldn't imagine ever going back to autotools at this point.
- nbkolchin 12y agoYou probably never build anything for Windows.
- norswap 12y agoThat's not what I asked though. Having worked with CMake, it seems more expressive than Make (meaning you don't have to contort it to make it do what you want), but it seems quite complex I the sense that I don't have a clear picture of its semantics, i.e. what's going on behind the hood.
- bodyfour 12y agocmake is a replacement for the autotools suite, not make itself. You're right that it can be tricky to use. One advantage cmake has is that you can tell it to emit files for ninja instead of traditional Makefiles. ninja is very well optimized for the problem of parallel building.