title: CMAKE: Build library and link against it
body: <p>I'm trying to use cmake (on Linux with GNU make and g++) to build a project with two sub-directories:  MyLib and MyApp.  MyLib contains source for a static library; MyApp needs to link against that library.  I'm trying to build on Linux with generated makefiles using the following CMakeLists.txt:</p>
  
  <pre><code>cmake_minimum_required (VERSION 2.6)
  project (MyProj)
  include_directories (MyLib)
  file(GLOB MyLibSrc MyLib/*.cpp)
  add_library(MyLibrary STATIC ${MyLibSrc})
  file(GLOB MyAppSrc MyApp/*.cpp)
  add_executable(MyApplication ${MyAppSrc})
  target_link_libraries(MyApplication MyLibrary)
  </code></pre>
  
  <p>This 'almost' works.  It fails at link time because while it generates libMyLibrary.a - it is in the root.  When I add:</p>
  
  <pre><code>link_directories(${MyProj_BINARY_DIR})
  </code></pre>
  
  <p>it makes no difference.</p>
  
  <p>I've got a few (inter-linked) questions:</p>
  
  <ol>
  <li>What's the best way to coerce cmake into building my library and executable into a 'staging directory' &mdash; say MyStage &mdash; to keep targets separate from source?</li>
  <li>How do I convince cmake to link the application against the library?</li>
  <li>If I wanted to build a debug and a release version, what's the best way to extend my cmake scripts to do this &mdash; making sure that the debug application links against the debug library and the release application against the release library?</li>
  </ol>
  
  <p>I'm a relative newcomer to cmake. I've read what I can find on the web, but find myself struggling to get my library to link with my executable. This sort of a configuration, to my mind, should be quite common. An example from which to crib would be very helpful, but I've not found one.</p>