On 4/12/2014 10:07, Andrey Semashev wrote:
On Wed, Dec 3, 2014 at 11:30 PM, Rene Rivera
wrote: On Wed, Dec 3, 2014 at 2:07 PM, Andrey Semashev
wrote: IMHO, either Boost.Build has to parse the code properly,
Is there a build system out there that correctly handles the extent of MPLs preprocessor driven header inclusion? I'm asking so that we can ascertain how it could be done.
Frankly, I'm not sure any build system even attempts to parse C/C++, let alone do some preprocessing. I must say, I don't know many build systems, though.
Bog-standard GCC makefiles usually do this by using special compiler options that generate dependency rules either instead of or as well as the normal compilation output. Of course, this isn't portable, and does require the build to be run in its entirety first -- it merely provides that dependency information to the second and subsequent builds so that it's known which source files need recompiling if a header file is changed, to avoid a full rebuild (or worse, an incomplete one). Something else still needs to know what order to build the libraries at the higher level though, especially for that first run.