[CMake] Parallel build with custom command

Brad King brad.king at kitware.com
Tue Oct 7 14:34:25 EDT 2014


On 10/07/2014 12:14 PM, Ruslan Baratov via CMake wrote:
> Yes, that's why second file always modified. So assume I have a script 
> that generates a lot of *.cpp files. I modify script so it only change 
> one file, one file modified - one file recompiled. So what I trying to 
> do is optimization that can be checked by rule: "if there is at least 
> one file from OUTPUT list that is newer then any file from DEPENDS list 
> - you don't need to rerun custom command".
> 
> So this optimization is not possible (?) custom command must modify all 
> the files from OUTPUT list?

Build systems will re-run a rule if any input is newer than any output.
One way to achieve what you want is to not list the .cpp files as outputs.
Instead just use some cpp-generated.stamp file as the output that you do
touch every time.  The .cpp files will be generated as side-effects, and
the rule will re-run only when the input changes regardless of whether
the generated .cpp files change.

FYI, there is an open issue for Ninja support of this case:

 http://www.cmake.org/Bug/view.php?id=14963

-Brad



More information about the CMake mailing list