[CMake] Parallel build with custom command

Ruslan Baratov ruslan_baratov at yahoo.com
Wed Oct 8 07:22:38 EDT 2014


On 07-Oct-14 22:34, Brad King wrote:
> 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.
Thanks! It's pretty clear and simple statement (but important one). What 
do you think about having it in documentation?
> 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.
Nice trick, but there is one catch - if you remove generated file 
(accidentially or on purpose) then nobody will rebuild it, since build 
system do not know what target exactly (custom command to be precise) 
responsible for it.
>
> FYI, there is an open issue for Ninja support of this case:
>
>   http://www.cmake.org/Bug/view.php?id=14963
Good to know, thanks.

Ruslo


More information about the CMake mailing list