[CMake] Poor performance of copy_if_different

Robert Dailey rcdailey.lists at gmail.com
Tue Nov 6 12:06:45 EST 2012


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?


More information about the CMake mailing list