4 ms·
Standard Makefiles are really under appreciated today. They are simple and can be used with most any language, version controlled and have been around for decad
by _wldu 7y ago
Standard Makefiles are really under appreciated today. They are simple and can be used with most any language, version controlled and have been around for decades.
- neuronic 7y agoBut it's not a product you can sell or artificially inflate its monetary value so out the window it goes.
- adgasf 7y agoMakefiles are too low level to be convenient for anything other than simple projects on one platform.
- gerbilly 7y agoIf the alternative you are hinting at is CMake, I can't really agree with you. I tried it recently and was shocked at how awful the syntax and usability was. It's begging for a tool to auto-detect your dependencies from source. I was trying to port an existing project to it and I gave up when I realised that I'd have to manually create about 30 CMakeList.txt files or whatever they call them. Meanwhile during the same weekend, autoconf allowed me to build gcc from source with three commands. I know I know, I'm not supposed to like autoconf, and the orthodoxy is that it is garbage ... It seems every generation ignores the previous generation's tools and invents worse ones to replace them. If this continues we'll soon go back to banging rocks and sticks together.
- adgasf 7y agoI am definitely not hinting at CMake! Better options are Bazel, Buck and Please. Please is the most light-weight option.
- jeltz 7y agoTake a look at Ninja and Bazel. I ahree with you that CMake is worse than autoconf but I would argue that the tools which came after CMake are better than CMake and autoconf. So while there certainly are regressions not every new generation is worse than the previous.
- adgasf 7y agoNinja is an optimized back-end for other build-systems (including but not limited to CMake). It's not really intended to be used directly.
- outadoc 7y agoThey don't solve any dependency management problems.
- dfox 7y agoMost ports like systems actually use makefiles to solve cross-package dependency management. (Whether that is good approach and whether writing what is essentially package manager as hairy ball of makefiles is good idea are another questions)
- GordonS 7y agoAgreed (although I so wish they weren't utterly dependant on tabs!) I even sometimes use makefiles in conjunction with Docker, for example to automatically add the correct tags to a build - it's much easier to type `make build` that to remember a massive invocation for `docker build`.
- turk73 7y agoMake is possibly the worst of the breed. I would not want to go back to messing with Makefiles when so much has happened in build as code. Just look at how Maven revolutionized builds with the concept of convention over configuration. Make is purely configuration. The whitespace issues in Makefiles used to drive me batty, which alone was a reason to not use Make.
- int_19h 7y agoMakefiles are problematic on Windows, though. There's no Make out of the box, there's a bunch of incompatible makes that are subtly different in different ways, and then most Makefiles tend to assume sh and POSIX at some point.