Glad to see there are so many enlightened souls in this thread who wield their well-configured flaming swords of truth against the darkness between the non-whitespaces.<p>I for one was eternally flustered as a new programmer in college trying to edit Makefiles with the tools that I felt comfortable with and that were available to me. The tab/space debacle is a completely unnecessary footgun, even worse than the various atrocities of variable assignment spacing and test bracket spacing in `sh`. I am grateful for Make to exist in that it is an important part of the history of Unix and software development, but would rather not use it if given the option.<p>I for one graciously accept Stuart Feldman's apology.<p><pre><code> C begot Unix
Unix begot Make
And Make begot the 10_000 things</code></pre>
I don't think I've ever been bitten by confusion over tabs vs other whitespace in a Makefile—Emacs out of the box is a great Makefile IDE. But I can understand the frustration if you only have access to lesser tools.<p>I should add that learning make well has been a great boon for my career. It's an incredibly powerful and elegant tool, assuming your project can inhabit the subset of projects that will never, ever have paths containing spaces.
You can actually avoid using tabs in makefiles, by using semicolon instead of newline: <a href="https://stackoverflow.com/a/4419361/623763" rel="nofollow">https://stackoverflow.com/a/4419361/623763</a>
I have never understood this. Making MAKE accept spaces in addition to tabs would be a backwards-compatible change. I see no reason why this could not be done even today.
I've never had issues with tabs in Makefiles, but I admit it's a bad design and wonder why it hasn't been corrected in all these years. It's not like there hasn't been time to plan a path towards a better design in steps: first introduce a new way to do things still supporting the old way, then start sending warnings when the old one is used, then require an explicit opt-in to support the old syntax, finally only accept the new one.
Anyone understand this question:<p>"At least, I’m pretty sure how things happened, but Wikipedia is inconclusive. Does anyone know?"<p>What specifically about the linked Wikipedia article are they confused about and how is it inconclusive on that issue?
You can just tell make to use a different character instead of tab. Literally.* It works fine.<p>What could go wrong?<p>* this may be a gnu extension, not sure. I did test it once and it works perfectly.
> Another is the fateful decision of the author of make to have the space character and the (visually identical) tab character do very different things.<p>Tell me that your editor has bad defaults and you don't know how to configure it without telling me that your editor has bad defaults and you don't know how to configure it.<p>I can't understand how that still gets always claimed. I can't remember when editors got clever enough to show whitespace with distinct features but Eclipse had that, so at least early 2000s?<p>Fun fact, on the homepage of Apache Ant, there was for years the paragraph that one reason for its existence was due to the author not being able to handle tabs in Makefiles.<p>> Makefiles are inherently evil as well. Anybody who has worked on them for any time has run into the dreaded tab problem. "Is my command not executing because I have a space in front of my tab!!!" said the original author of Ant way too many times. Tools like Jam took care of this to a great degree, but still have yet another format to use and remember.<p><a href="https://web.archive.org/web/20100203102803/http://ant.apache.org:80/" rel="nofollow">https://web.archive.org/web/20100203102803/http://ant.apache...</a>