<div class="gmail_quote">On Tue, Nov 15, 2011 at 22:39, Barry Smith <span dir="ltr"><<a href="mailto:bsmith@mcs.anl.gov">bsmith@mcs.anl.gov</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
  Ideally we would not need to list the information separate from the source file. What should happen is the BuildSystem parses each source file, determines what includes are used and then passes to the compiler exactly the correct -I and no extra.  Or as alternative the BuildSystem behaves like CPP and actually puts the exact full path for each include into the source code just before passing it to the compiler. This takes the whole bothersome problem of the compiler searching through the -I paths to find the first include file with the same name and including it. In other words BuildSystem takes on more parts of the compile process away from the untrustworthy UNIX tools for compiling and linking.</blockquote>
</div><br><div>I agree with the rest of your mail, but not this part. I think that the build environment should be managed in essentially the same way for library source code and examples. I also think it's important that examples be relocatable to a user's own project and built with simple tools. If the build system is doing goofy preprocessing, then users won't be able to build it easily with their own tools.</div>