I would recommend using EXTERNALPROJECT_ADD.  <a href="http://www.cmake.org/cmake/help/cmake-2-8-docs.html#module:ExternalProject" target="_blank">http://www.cmake.org/cmake/help/cmake-2-8-docs.html#module:ExternalProject</a>.  Though I am not building in ITK as of yet I am using VTKEdge which depends on VTK<br>

<br>--snip vtkedge_config.cmake --<br>macro( vtkedge_config )<br>    set( VTK_EDGE_PACKAGE VTKEdge-5-4-0 )<br><br>    unpack( ${PLATFORM_DIR}/VTKEdge/<div id=":2qb" class="ii gt">VTKEdge-5-4-0.zip ${THIRD_PARTY_PACKAGE_DIR} )<br>
<br><br>    include_directories(<br>
        ${INSTALL_PREFIX}/include/VTKEdge<br>    )<br><br><br>    ExternalProject_Add(<br>        ${VTK_EDGE_PACKAGE}<br>        DOWNLOAD_COMMAND &quot;&quot;<br>        SOURCE_DIR ${TOP}/source/cpp/lib/3rdParty/Win/${VTK_EDGE_PACKAGE}<br>

        BINARY_DIR ${BUILD_DIR}/ouput/bin/${VTK_EDGE_PACKAGE}<br>        INSTALL_DIR ${INSTALL_PREFIX}<br>        CMAKE_ARGS <br>            -DCMAKE_INSTALL_PREFIX=${INSTALL_PREFIX} <br>            -DINSTALL_PREFIX=${INSTALL_PREFIX} <br>

        ${VTK_DEFINES}<br>    )<br><br>endmacro()<br>--end snip--<br><br>In my top level CMakeLists.txt file I call as follows<br><br><br><br>--snip CMakelists.txt -- <br>...<br>...<br>include( vtkedge_config.cmake )<br>
<br>
...<br>...<br>...<br><br>compiler_config()<br>cuda_config()<br>boost_config()<br>#dcmtk_config()<br>vtk_config()<br>vtkedge_config()<br>matlab_config()<br><br>...<br>...<br>...<br><br>--end snip--<br><br>It
 is only boost, and only by patching, that I can get to play nice using 
add_subdirectory.   I would be interested to hear your trials and 
tribulations with add_subdirectory and third party source.</div>