title: CMake variable expansion using "@" vs. "${}"
body: <p>Consider the following:</p>
  
  <pre><code>SET(TEST_DIR, "test")
  INSTALL(PROGRAMS scripts/foo.py DESTINATION ${TEST_DIR})
  INSTALL(PROGRAMS scripts/foo.py DESTINATION @TEST_DIR@)
  </code></pre>
  
  <p>The first <code>INSTALL</code> command does not work. The second does. Why is that? What is the difference between those two? I have not found any reference to <code>@@</code> expansion except in the context of creation of configuration files. Everything else only uses <code>${}</code> expansion. </p>
  
  <p>UPDATE: OK, obvious bug in the above. My <code>SET()</code> command has an extraneous comma. Removing it, such that it looks like:</p>
  
  <pre><code>    SET(TEST_DIR "test")
  </code></pre>
  
  <p>results in both <code>@@</code> and <code>${}</code> expansions working. Still wondering (a) what is the meaning of <code>@@</code> as opposed to <code>${}</code>, and why only the former worked with my incorrect <code>SET()</code> statement.</p>