Have you checked the Makefiles which CMake creates
to see if there are any surprising dependencies
which could be causing the large extent of the recompile.
Alex Brooks wrote:
Thanks for the quick responses.
Comments inline:
Eric:
May be svn is the culprit.
Did you have a look at the timestamp of the file/directory enclosing
(and up) the
changed CMakeLists.txt after the svn update?
May be a single change inside a directory change the timestamp
of a set of file?
When an svn update pulls in a change to a CMakeLists.txt file, the following
timestamps are updated:
1. the timestamp of the CMakeLists.txt file itself, and
2. the timestamp of the directory.
If I manually do a 'touch CMakeLists.txt', it changes the timestamp of the file
itself but not the directory.
I don't know why this might cause a complete rebuild.
If I manually do 'touch .; touch CMakeLists.txt; make' somewhere in the source
tree, it doesn't force a rebuild.
Another option may be that this particular CMakeLists.txt is generating
(using configure_file) some file that is [indirectly] included by many
other?
I've looked for this kind of thing. Files which do not depend on any
dynamically-generated files also get rebuilt.
May be you can have look at the dependencies in
CMakeFiles/Makefile.cmake
I don't have this file, but I have CMakeFiles/Xxx.dir/depend.cmake.
Here's a sample:
# CMAKE generated file: DO NOT EDIT!
# Generated by "Unix Makefiles" Generator, CMake Version 2.8
orca/src/hydrolibs/hydrodll/CMakeFiles/HydroDll.dir/dll.cpp.o:
orca/src/hydrolibs/hydrodll/dll.cpp
orca/src/hydrolibs/hydrodll/CMakeFiles/HydroDll.dir/dll.cpp.o:
orca/src/hydrolibs/hydrodll/dll.h
orca/src/hydrolibs/hydrodll/CMakeFiles/HydroDll.dir/dll.cpp.o:
orca/src/hydrolibs/hydrodll/exceptions.h
In this case, when a rebuild is forced I always see dll.cpp.o get rebuilt
(despite no changes to dll.h/dll.cpp/exceptions.h)
All of these files are written by hand, not are generated using configure_file.
Marcel:
Or do you use keyword expansion in your CMakeLists.txt file. Keywords,
like $Id$, $Author$, etc. are a relict from CVS, but still supported by
Subversion, though you have to explicitly activate it using properties.
No, I don't use anything like this. If I diff the files mentioned in e.g. the
"hydrodll" directory above, there are no changes (and the timestamps haven't
moved). But an svn update to an unrelated directory causes a rebuild.
Any other ideas?
_______________________________________________
Powered by www.kitware.com
Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html
Please keep messages on-topic and check the CMake FAQ at:
http://www.cmake.org/Wiki/CMake_FAQ
Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake
_______________________________________________
Powered by www.kitware.com
Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html
Please keep messages on-topic and check the CMake FAQ at:
http://www.cmake.org/Wiki/CMake_FAQ
Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake