title: Four Dollar signs in Makefile
body: <p>I am reading the document of GNU Make. Here is an example</p>
  <blockquote>
  <p>%.d: %.c</p>
  <pre><code>    @set -e; rm -f $@; \
  
       $(CC) -M $(CPPFLAGS) $&lt; &gt; $@.$$$$; \
  
       sed ’s,\($*\)\.o[ :]*,\1.o $@ : ,g’ &lt; $@.$$$$ &gt; $@; \
  
       rm -f $@.$$$$
  </code></pre>
  </blockquote>
  <p>I tried this on a C++ program, and got the list of files</p>
  <blockquote>
  <p>init3d.d  init3d.d.18449  input.d  input.d.18444  main.d  main.d.18439</p>
  </blockquote>
  <p>Here is what I found but don't understand in the same <a href="https://www.gnu.org/software/make/manual/html_node/Rule-Syntax.html" rel="noreferrer">document</a></p>
  <blockquote>
  <p>If you have enabled secondary expansion and you want a literal dollar sign in the  prerequisites list, you must actually write four dollar signs (‘$$$$’).</p>
  </blockquote>
  <p>I wonder what the four dollar signs &quot;$$$$&quot; mean actually? How do they 18449, 18444 or 18439?</p>
  <p>Thanks and regards!</p>