One thing that make appears completely unable to do cleanly is to build things twice, with different flags. You know, like &#x27;build a release version and a debug version&#x27;. I&#x27;ve ended up having to write self-writing makefiles to do that. It&#x27;s not as nasty as it sounds (but still pretty nasty): <a href="https:&#x2F;&#x2F;github.com&#x2F;davidgiven&#x2F;wordgrinder&#x2F;blob&#x2F;master&#x2F;Makefile" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;davidgiven&#x2F;wordgrinder&#x2F;blob&#x2F;master&#x2F;Makefi...</a><p>Plus, &#x27;set a flag for just this file&#x27; is another thing that&#x27;s appallingly broken. GNU Make has an extension to do that --- but if you use it, it makes your builds non-deterministic. (Flags propagate down the build chain; builds are not in a defined order; each file is built once regardless of the flags for that file; so if a file is reachable via more than one rule with different flags settings, it&#x27;s pure luck which setting wins...)