title: Switching between GCC and Clang/LLVM using CMake
body: <p>I have a number of projects built using CMake and I'd like to be able to easily switch between using GCC or Clang/LLVM to compile them. I believe (please correct me if I'm mistaken!) that to use Clang I need to set the following:</p>
  
  <pre><code>    SET (CMAKE_C_COMPILER             "/usr/bin/clang")
      SET (CMAKE_C_FLAGS                "-Wall -std=c99")
      SET (CMAKE_C_FLAGS_DEBUG          "-g")
      SET (CMAKE_C_FLAGS_MINSIZEREL     "-Os -DNDEBUG")
      SET (CMAKE_C_FLAGS_RELEASE        "-O4 -DNDEBUG")
      SET (CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -g")
  
      SET (CMAKE_CXX_COMPILER             "/usr/bin/clang++")
      SET (CMAKE_CXX_FLAGS                "-Wall")
      SET (CMAKE_CXX_FLAGS_DEBUG          "-g")
      SET (CMAKE_CXX_FLAGS_MINSIZEREL     "-Os -DNDEBUG")
      SET (CMAKE_CXX_FLAGS_RELEASE        "-O4 -DNDEBUG")
      SET (CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g")
  
      SET (CMAKE_AR      "/usr/bin/llvm-ar")
      SET (CMAKE_LINKER  "/usr/bin/llvm-ld")
      SET (CMAKE_NM      "/usr/bin/llvm-nm")
      SET (CMAKE_OBJDUMP "/usr/bin/llvm-objdump")
      SET (CMAKE_RANLIB  "/usr/bin/llvm-ranlib")
  </code></pre>
  
  <p>Is there an easy way of switching between these and the default GCC variables, preferably as a system-wide change rather than project specific (i.e. not just adding them into a project's CMakeLists.txt)?</p>
  
  <p>Also, is it necessary to use the <code>llvm-*</code> programs rather than the system defaults when compiling using clang instead of gcc? What's the difference?</p>