title: Purpose of declaring `all` as .PHONY?
body: <p>The GNU Make manual describes the following <a href="https://gnu.org/software/make/manual/html_node/Phony-Targets.html" rel="nofollow noreferrer">use case</a> of <code>.PHONY</code>.</p>
  <pre><code>all : prog1 prog2 prog3
  .PHONY : all
  
  prog1 : prog1.o utils.o
      cc -o prog1 prog1.o utils.o
  
  prog2 : prog2.o
      cc -o prog2 prog2.o
  
  prog3 : prog3.o sort.o utils.o
      cc -o prog3 prog3.o sort.o utils.o
  </code></pre>
  <p>It states that I can now just call <code>make</code> to remake all three programs. Which is fine, but I can achieve the same without declaring <code>all</code> as a prerequisite of <code>.PHONY</code> (as <code>all</code> is the default goal). Hence, my question:</p>
  <p>Is the <strong>only</strong> purpose of <code>all</code> being listed as a prerequisite of <code>.PHONY</code> that I can still remake all three programs even if I accidentally, in the unlikely case, create a file in the same directory named <code>all</code>? I would love to know other reasons if there are any, thanks.</p>