title: CMake Difference between include_directories and add_subdirectory?
body: <p>I'm learning CMake for building C++ code, and struggling with the following concept.  On my root level directory I have some cpp files and a CMakeLists.txt that succesfully generates some thrift code in a gen-cpp directory.  My root level CMakeLists.txt contains :</p>
  
  <p>include_directories("path-to-root"/gen-cpp).    (along with the relevant thrift auto-generating and includes.</p>
  
  <p>Everything compiles ok but I get run time dynamic library linked errors for undefined symbol referencing a class defined in the gen-cpp directory.  When I move the files in the directory to the root level, it runs fine.  what am I missing?  (I had also adjusted the #include in the root level cpp directorie s to point to "path-to-root"/gen-cpp).</p>
  
  <p>Is this a misunderstanding of using include_directory, where I should be using add_subdirectory.  If the latter, would the code in gen-cpp needs its own CMakeLists.txt?  Why is this additional file not needed, when the contents of said directory are root level?</p>