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
--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake

Reply via email to