title: CFLAGS vs CPPFLAGS
body: <p>I understand that CFLAGS (or CXXFLAGS for C++) are for the compiler, whereas CPPFLAGS is used by the preprocessor.</p>
  
  <p>But I still don't understand the difference.</p>
  
  <p>I need to specify an include path for a header file that is included with #include -- because #include is a preprocessor directive, is the preprocessor (CPPFLAGS) the only thing I care about?</p>
  
  <p>Under what circumstances do I need to give the compiler an extra include path?</p>
  
  <p>In general, if the preprocessor finds and includes needed header files, why does it ever need to be told about extra include directories?  What use is CFLAGS at all?  </p>
  
  <p>(In my case, I actually found that <strong>BOTH</strong> of these allow me to compile my program, which adds to the confusion... I can use CFLAGS <strong><em>OR</em></strong> CPPFLAGS to accomplish my goal (in autoconf context at least).  What gives?)</p>