Well of course you&#39;re not doomed. If you were doomed, cmake would print out &quot;you are doomed&quot; in the console output......<br><br>Since you are doing a cvs repository checkout of a specific (presumably static and immutable) tag using the -r argument, you can specify:<br>
  UPDATE_COMMAND &quot;&quot;<br>for the tcl and tk external projects...<br><br>The problem is that repository based checkouts assume they have to be updated to be &quot;current&quot;, when in fact, in this case, you do not need the cvs update step. (Since you are using a tag that should always retrieve the same content from the repo.)<br>
<br>Using UPDATE_COMMAND &quot;&quot; should prevent the tcl and tk builds from rebuilding all the time, which in turn, should prevent VTK from rebuilding unless there is an actual change before it to trigger a rebuild....<br>
<br><br>HTH,<br>David<br><br><br><br><div class="gmail_quote">On Tue, Apr 13, 2010 at 2:04 PM, kent williams <span dir="ltr">&lt;<a href="mailto:nkwmailinglists@gmail.com">nkwmailinglists@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">So if I use large libraries as ExternalProject builds, am I doomed to<br>
have everything rebuild every time I run Make?  Every time I type make<br>
at the top level of my tree, it does every step of every external<br>
project build.<br>
<br>
This wouldn&#39;t be so terrible, but if Tcl and Tk get re-installed, then<br>
VTK will recompile everything including a Tcl or Tk header.<br>
<br>
Below I have my CMakeLists.txt that I&#39;m currently working with.<br>
========================CMakeLists.txt==============================================<br>
project(TclTkVtk)<br>
cmake_minimum_required(VERSION 2.8)<br>
cmake_policy(VERSION 2.8)<br>
set(CMAKE_VERBOSE_MAKEFILE on)<br>
enable_testing()<br>
include(Dart)<br>
include(CPack)<br>
include(ExternalProject)<br>
<br>
find_package( Qt4 REQUIRED )<br>
if(QT_USE_FILE)<br>
  include(${QT_USE_FILE})<br>
  set(QT_USE_QTXML 1)<br>
else(QT_USE_FILE)<br>
  set( QT_LIBRARIES   ${QT_QT_LIBRARY})<br>
endif(QT_USE_FILE)<br>
<br>
SET(QT_CMAKE_FLAGS<br>
-DVTK_USE_QT:BOOL=ON<br>
-DVTK_USE_QVTK:BOOL=ON<br>
-DVTK_USE_GUISUPPORT:BOOL=ON<br>
-DDESIRED_QT_VERSION:STRING=4<br>
-DVTK_USE_QVTK_QTOPENGL:BOOL=ON<br>
)<br>
<br>
if(APPLE)<br>
set(QT_CMAKE_FLAGS ${QT_CMAKE_FLAGS}<br>
-DVTK_USE_CARBON:BOOL=OFF<br>
-DVTK_USE_COCOA:BOOL=ON<br>
-DVTK_USE_X:BOOL=OFF<br>
)<br>
set(LIB_EXT dylib)<br>
set(EXTRA_TK_FLAGS<br>
--enable-aqua<br>
--enable-corefoundation<br>
)<br>
else(APPLE)<br>
set(QT_CMAKE_FLAGS ${QT_CMAKE_FLAGS}<br>
-DVTK_USE_CARBON:BOOL=OFF<br>
-DVTK_USE_COCOA:BOOL=OFF<br>
-DVTK_USE_X:BOOL=ON<br>
)<br>
set(LIB_EXT .so)<br>
endif(APPLE)<br>
<br>
SET(LOCAL_CMAKE_BUILD_OPTIONS<br>
  -DMAKECOMMAND:STRING=${MAKECOMMAND}<br>
  -DCMAKE_SKIP_RPATH:BOOL=ON<br>
  -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}<br>
  -DCMAKE_CXX_FLAGS_RELEASE:STRING=${CMAKE_CXX_FLAGS_RELEASE}<br>
  -DCMAKE_CXX_FLAGS_DEBUG:STRING=${CMAKE_CXX_FLAGS_DEBUG}<br>
  -DCMAKE_CXX_FLAGS:STRING=${CMAKE_CXX_FLAGS}<br>
  -DCMAKE_C_FLAGS_RELEASE:STRING=${CMAKE_C_FLAGS_RELEASE}<br>
  -DCMAKE_C_FLAGS_DEBUG:STRING=${CMAKE_C_FLAGS_DEBUG}<br>
  -DCMAKE_C_FLAGS:STRING=${CMAKE_C_FLAGS}<br>
  -DBUILD_EXAMPLES:BOOL=OFF<br>
  -DBUILD_SHARED_LIBS:BOOL=${BUILD_SHARED_LIBS}<br>
  -DBUILD_TESTING:BOOL=OFF<br>
  -DCMAKE_GENERATOR:STRING=${CMAKE_GENERATOR}<br>
  -DCMAKE_EXTRA_GENERATOR:STRING=${CMAKE_EXTRA_GENERATOR}<br>
  -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_INSTALL_PREFIX}<br>
  -DCMAKE_LIBRARY_OUTPUT_DIRECTORY:PATH=${CMAKE_LIBRARY_OUTPUT_DIRECTORY}<br>
  -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY:PATH=${CMAKE_ARCHIVE_OUTPUT_DIRECTORY}<br>
  -DCMAKE_RUNTIME_OUTPUT_DIRECTORY:PATH=${CMAKE_RUNTIME_OUTPUT_DIRECTORY}<br>
  -DCMAKE_BUNDLE_OUTPUT_DIRECTORY:PATH=${CMAKE_BUNDLE_OUTPUT_DIRECTORY}<br>
  -DDART_TESTING_TIMEOUT:STRING=${DART_TESTING_TIMEOUT}<br>
  -DMEMORYCHECK_COMMAND_OPTIONS:STRING=${MEMORYCHECK_COMMAND_OPTIONS}<br>
  -DMEMORYCHECK_COMMAND:PATH=${MEMORYCHECK_COMMAND}<br>
  -DCMAKE_SHARED_LINKER_FLAGS:STRING=${CMAKE_SHARED_LINKER_FLAGS}<br>
  -DCMAKE_EXE_LINKER_FLAGS:STRING=${CMAKE_EXE_LINKER_FLAGS}<br>
  -DCMAKE_MODULE_LINKER_FLAGS:STRING=${CMAKE_MODULE_LINKER_FLAGS}<br>
  -DSITE:STRING=${SITE}<br>
  -DBUILDNAME:STRING=${BUILDNAME}<br>
  ${QT_CMAKE_FLAGS}<br>
)<br>
<br>
set(TCL_DEPEND TCL)<br>
set(proj TCL)<br>
ExternalProject_Add(${proj}<br>
CVS_REPOSITORY &quot;:pserver:anonymous:@tcl.cvs.sourceforge.net:/cvsroot/tcl&quot;<br>
CVS_TAG -r core-8-5-7<br>
CVS_MODULE  &quot;tcl&quot;<br>
CONFIGURE_COMMAND  CMAKE_C_COMPILER=&quot;${CMAKE_C_COMPILER}&quot;<br>
CMAKE_CXX_COMPILER=&quot;${CMAKE_CXX_COMPILER}&quot;<br>
${CMAKE_CURRENT_BINARY_DIR}/TCL-prefix/src/TCL/unix/configure<br>
--prefix=${CMAKE_CURRENT_BINARY_DIR}<br>
)<br>
<br>
set(TK_DEPEND TK)<br>
set(proj TK)<br>
ExternalProject_Add(${proj}<br>
CVS_REPOSITORY &quot;:pserver:anonymous:@tcl.cvs.sourceforge.net:/cvsroot/tktoolkit&quot;<br>
CVS_TAG -r core-8-5-7<br>
CVS_MODULE  &quot;tk&quot;<br>
CONFIGURE_COMMAND  CMAKE_C_COMPILER=&quot;${CMAKE_C_COMPILER}&quot;<br>
CMAKE_CXX_COMPILER=&quot;${CMAKE_CXX_COMPILER}&quot;<br>
${CMAKE_CURRENT_BINARY_DIR}/TK-prefix/src/TK/unix/configure<br>
--prefix=${CMAKE_CURRENT_BINARY_DIR}<br>
--with-tcl=${CMAKE_CURRENT_BINARY_DIR}/lib ${EXTRA_TK_FLAGS}<br>
DEPENDS ${TCL_DEPEND}<br>
)<br>
<br>
<br>
#<br>
# build VTK<br>
# -DVTK_USE_TK:BOOL=yes<br>
set(VTK_DEPEND VTK)<br>
set(proj VTK)<br>
<br>
ExternalProject_Add(${proj}<br>
CVS_REPOSITORY &quot;:pserver:anonymous@public.kitware.com:/cvsroot/VTK&quot;<br>
CVS_TAG -r VTK-5-4-2<br>
CVS_MODULE &quot;VTK&quot;<br>
CMAKE_ARGS ${LOCAL_CMAKE_BUILD_OPTIONS} -DVTK_WRAP_TCL:BOOL=ON<br>
-DTCL_INCLUDE_PATH:PATH=${CMAKE_CURRENT_BINARY_DIR}/include<br>
-DTK_INCLUDE_PATH:PATH=${CMAKE_CURRENT_BINARY_DIR}/include<br>
-DTCL_LIBRARY:FILEPATH=${CMAKE_CURRENT_BINARY_DIR}/lib/libtk8.5.${LIB_EXT}<br>
-DTK_LIBRARY:FILEPATH=${CMAKE_CURRENT_BINARY_DIR}/lib/libtcl8.5.${LIB_EXT}<br>
-DTCL_TCLSH:FILEPATH=${CMAKE_CURRENT_BINARY_DIR}/bin/tclsh8.5<br>
INSTALL_DIR ${CMAKE_INSTALL_PREFIX}<br>
DEPENDS ${TCL_DEPEND} ${TK_DEPEND}<br>
)<br>
_______________________________________________<br>
Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
<br>
Visit other Kitware open-source projects at <a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
<br>
Please keep messages on-topic and check the CMake FAQ at: <a href="http://www.cmake.org/Wiki/CMake_FAQ" target="_blank">http://www.cmake.org/Wiki/CMake_FAQ</a><br>
<br>
Follow this link to subscribe/unsubscribe:<br>
<a href="http://www.cmake.org/mailman/listinfo/cmake" target="_blank">http://www.cmake.org/mailman/listinfo/cmake</a><br>
</blockquote></div><br>