<story><title>Make: Theory and Practice</title><url>http://www.ploxiln.net/make.html</url></story><parent_chain></parent_chain><comment><author>jgrahamc</author><text>Not a bad introduction. I spent years working on GNU make stuff (including a complete emulation) at Electric Cloud and wrote an &amp;quot;Ask Mr Make&amp;quot; column. Everything I wrote about GNU make can be found here: &lt;a href=&quot;http:&amp;#x2F;&amp;#x2F;blog.jgc.org&amp;#x2F;2013&amp;#x2F;02&amp;#x2F;updated-list-of-my-gnu-make-articles.html&quot; rel=&quot;nofollow&quot;&gt;http:&amp;#x2F;&amp;#x2F;blog.jgc.org&amp;#x2F;2013&amp;#x2F;02&amp;#x2F;updated-list-of-my-gnu-make-arti...&lt;/a&gt;&lt;p&gt;[blatant advertising] And also I have a new book on GNU make coming out this month: &lt;a href=&quot;http:&amp;#x2F;&amp;#x2F;www.nostarch.com&amp;#x2F;gnumake&quot; rel=&quot;nofollow&quot;&gt;http:&amp;#x2F;&amp;#x2F;www.nostarch.com&amp;#x2F;gnumake&lt;/a&gt; if you really want to get into make deeply.</text></comment>
<story><title>Make: Theory and Practice</title><url>http://www.ploxiln.net/make.html</url></story><parent_chain></parent_chain><comment><author>rspeer</author><text>I&amp;#x27;m currently using Make as part of a data-building pipeline. It&amp;#x27;s nice that it&amp;#x27;s a build system that doesn&amp;#x27;t assume my goal is to build a binary or a JS file, and that it&amp;#x27;s remarkably easy to parallelize.&lt;p&gt;One deficiency I&amp;#x27;ve come across, which seems to be well-known, is the M:N problem -- where one step takes M input files and has N output files. Make rules seem to expect to have only 1 output, and the workarounds like .SECONDARY prevent some features of Make from working correctly.&lt;p&gt;I&amp;#x27;ve also seen this limitation in many of the fancy new build systems that get posted here on HN.&lt;p&gt;Is there a build system, a modification to Make, or anything out there that &lt;i&gt;does&lt;/i&gt; keep track of builds with multiple outputs? Not an I&amp;#x2F;O-guzzling MapReduce framework, please.</text></comment>