[CMake] Run clean before automatically re-running cmake?

Bill Hoffman bill.hoffman at kitware.com
Fri Feb 14 11:55:22 EST 2014


On 2/14/2014 11:00 AM, Abe Bachrach wrote:
> I'd only want to do a full build if one of the CMakeLists.txt has
> changed (cmake needs to get re-run). Otherwise, I'd like to do a normal
> build.
That seems a bit over kill to me.  I would rather have a few extra files 
than having a complete clean done each time a new file is added or a 
flag is changed in a CMake file.  Here is what you should do....

1. create a list of all the targets in your project
2. use configure file to save the list, but be tricky so that it saves 
the last version of the file as well.
3. add a custom command that all your targets depend on.  The custom 
command should depend on the file that is configured.  It will get run 
only when the file changes if you use copy on different.  When the 
custom command runs it should diff the two files and figure out what 
target went away, and then remove it.

Basically, you should be able to do this all from the CMake language 
with custom commands and a CMake script.

-Bill



More information about the CMake mailing list