title: Avoiding implicit precompiled header dependencies?
body: <p>We are using a precompiled header to include library files such as Boost and Windows.<br>
  Our <code>precompiled.h</code> is included explicitly at the top of each <code>.cpp</code> file in order to work with the precompiled header commands (<a href="http://msdn.microsoft.com/en-us/library/7zc28563%28v=VS.90%29.aspx" rel="nofollow"><code>/Yc</code></a>, <a href="http://msdn.microsoft.com/en-us/library/z0atkd6c%28v=VS.90%29.aspx" rel="nofollow"><code>/Yu</code></a>, and <a href="http://msdn.microsoft.com/en-us/library/8f7a897x%28v=VS.90%29.aspx" rel="nofollow"><code>/Fp</code></a>).  I accepted that as necessary.</p>
  
  <p>Recently, however, I found <a href="http://msdn.microsoft.com/en-us/library/8c5ztk84%28v=VS.90%29.aspx" rel="nofollow"><code>/FI</code></a>, which forces an include file at the top of the source file.  I tried using it to force-include <code>precompiled.h</code> instead of including it explicitly, and sure enough, it worked.<br>
  This would allow us to omit the precompiled header (which is an implementation detail, as far as I am concerned), and only specify the actual dependencies of the file.  </p>
  
  <p>Unfortunately, it looks like the only way to validate that we aren't relying on implicit dependencies provided by <code>precompiled.h</code> is to periodically run through a build without <code>/FI"precompiled.h"</code> to see which files have a problem.<br>
  This is fairly onerous.  Is there a better way?</p>