[CMake] Complete rebuild after svn update

william.crocker at analog.com william.crocker at analog.com
Mon Oct 18 15:09:27 EDT 2010


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
> 


More information about the CMake mailing list