[CMake] Poor performance of copy_if_different

Robert Dailey rcdailey.lists at gmail.com
Tue Nov 6 12:22:03 EST 2012


Can you code up an example? I'm not sure how to do that.

On Tue, Nov 6, 2012 at 11:11 AM, Clinton Stimpson <clinton at elemtech.com> wrote:
>
> On Tuesday, November 06, 2012 11:06:45 AM Robert Dailey wrote:
>> I use ${CMAKE_COMMAND} -E copy_if_different to copy DLL files to my
>> binary output directory. The custom target runs this command about
>> 50-100 times (for that many files).
>>
>> I notice that when all files are already copied, the commands still
>> run extremely slowly. It takes just as long to copy all the files as
>> it does to copy none of them.
>>
>> I used the Sysinternals tool called Process Monitor to see what CMake
>> is doing as it runs copy_if_different. It's opening the full file and
>> seems to be comparing actual contents instead of something simple,
>> such as timestamp.
>>
>> I do not need such a thorough check, I simply want the check to see
>> which timestamp is higher and copy if the source is newer than the
>> target.
>>
>> Any reason why copy_if_different is so slow? Is my assumption correct?
>> How can I make it faster?
>
> How about using plain "cmake -E copy ..." and rely on the timestamp check done
> by a custom command (add_custom_command()).
> You need to make sure the input/ouput parts of the custom command are set
> correctly so it can do a timestamp check.
>
> --
> Clinton Stimpson
> Elemental Technologies, Inc
> Computational Simulation Software, LLC
> www.csimsoft.com
> --
>
> 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