title: What is the modern method for setting general compile flags in CMake?
body: <p>There are multiple mechanisms offered by CMake for getting flags to the compiler:</p>
  
  <ul>
  <li><a href="http://www.cmake.org/cmake/help/v2.8.12/cmake.html#variable%3aCMAKE_LANG_FLAGS"><code>CMAKE_&lt;LANG&gt;_FLAGS_&lt;CONFIG&gt;</code> variables</a></li>
  <li><a href="http://www.cmake.org/cmake/help/v2.8.12/cmake.html#command%3aadd_compile_options"><code>add_compile_options</code> command</a></li>
  <li><a href="http://www.cmake.org/cmake/help/v2.8.12/cmake.html#command%3aset_target_properties"><code>set_target_properties</code> command</a></li>
  </ul>
  
  <p>Is there one method that is preferred over the other in modern use? If so why? Also, how can this method be used with multiple configuration systems such as MSVC?</p>