My solution is to write Jinja templates of C source files: <a href="https:&#x2F;&#x2F;github.com&#x2F;mcinglis&#x2F;libarray" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;mcinglis&#x2F;libarray</a><p>Libarray (and my other C libraries; Libvec etc) have served me very well on a 20k LOC project. With ~150 source files, the entire project builds from fresh in 20 seconds on a i7-2620M. Rebuilds are super-fast; with proper Makefile specification, there&#x27;s no need to rerender&#x2F;recompile the templated files.