title: What is the difference between the GNU Makefile variable assignments =, ?=, := and +=?
body: <p>Can anybody give a clear explanation of how variable assignment really works in Makefiles. </p>
  
  <p>What is the difference between :</p>
  
  <pre><code> VARIABLE = value
   VARIABLE ?= value
   VARIABLE := value
   VARIABLE += value
  </code></pre>
  
  <p>I have read the <a href="http://www.gnu.org/software/make/manual/make.html#Reading-Makefiles" rel="noreferrer">section</a> in GNU Make's manual, but it still doesn't make sense to me. </p>