title: CMake set cache is taking "CACHE" as a variable
body: <p>I am trying to override the default value of MY_VAR from command line, but I get an unexpected result:</p>
  
  <p>Excerpt from my CMakeLists.txt:</p>
  
  <pre><code>set( MY_VAR MY_VAR_DEF_VALUE CACHE INTERNAL "This is my_var" [FORCE] )
  message( "MY_VAR = ${MY_VAR}" )
  </code></pre>
  
  <p>cmake command:</p>
  
  <pre><code>cmake -DMY_VAR:INTERNAL=MY_VAR_USER_VALUE ..
  </code></pre>
  
  <p>Output:</p>
  
  <pre><code>MY_VAR = MY_VAR_DEF_VALUE;CACHE;INTERNAL;This is my_var;[FORCE]
  </code></pre>
  
  <p>I am expecting the output to be:</p>
  
  <pre><code>MY_VAR = MY_VAR_USER_VALUE
  </code></pre>
  
  <p>The weird part is that MY_VAR gets updated properly in CMakeCache.txt, see excerpt:</p>
  
  <pre><code>//No help, variable specified on the command line.
  
  MY_VAR:INTERNAL=MY_VAR_USER_VALUE
  </code></pre>
  
  <p>NOTE: I am doing an out of source build</p>
  
  <p>UPDATE (11/15/15):</p>
  
  <p>I removed the square brackets around FORCE, the output is:</p>
  
  <blockquote>
    <p>MY_VAR = MY_VAR_DEF_VALUE</p>
  </blockquote>
  
  <p>I removed FORCE, the output is:</p>
  
  <blockquote>
    <p>MY_VAR = MY_VAR_DEF_VALUE</p>
  </blockquote>