4 ms·
Your editor probably automatically converted tabs into spaces. And just like that, the Makefile stops working. Which proves the point: Makefiles are at a point
by revelation 10y ago
Your editor probably automatically converted tabs into spaces. And just like that, the Makefile stops working.
Which proves the point: Makefiles are at a point in life where they should be exclusively automatically generated.
The only exception are throwaway projects where you and only you use it.
- mbrock 10y agoI strongly disagree. The tab requirement for Make is very well known and less strange than custom Makefile generation. Simple Makefiles work extremely well in lots of projects.
- revelation 10y agoSomebody listed a number of common build system requirements below, but of course there are usually many many more like custom compilers, cross-compilation, any number of things that your "simple makefile" can't work with. By the time the Makefile has grown to support all these things it no longer has the properties that made it useful in the first place (parsimonious, understandable, small).
- anjbe 10y agoSupporting custom compilers and cross‐compilation is as simple as using ${CC} in the Makefile instead of gcc…
- revelation 10y agoThis is how we got into this mess in the first place. "Surely it can't be very difficult, let me just add this.."
- anjbe 10y agoPerhaps, but I suspect writing a portable Makefile is not as difficult as you think. Speaking as a packager, I have to patch many CMake build systems for portability issues. And don’t even get me started on SCons. Autotools is better in that regard, but has many flaws of its own. Here’s an example of a portable Makefile I’ve contributed to a project which handles the common packaging issues (staging directories, cross‐compilation, parallel builds): https://github.com/sinamas/gambatte/pull/6/commits/8d6fffc2b3614f3753aae30bf78e66626a88d428 https://github.com/sinamas/gambatte/pull/6/commits/8d6fffc2b... Compared to the original build system (two SConstructs): https://github.com/sinamas/gambatte/blob/master/gambatte_sdl/SConstruct https://github.com/sinamas/gambatte/blob/master/gambatte_sdl... https://github.com/sinamas/gambatte/blob/master/libgambatte/SConstruct https://github.com/sinamas/gambatte/blob/master/libgambatte/...
- Tyr42 10y agoI mean, if you're going to be generating it anyways, just generate ninja files. They are faster, but the downside is just that you need to generate them, as opposed to being generic.