[CMake] Only install file if it does not exist?

Eric Noulard eric.noulard at gmail.com
Wed Sep 9 03:20:56 EDT 2009


2009/9/9 Bob Tanner <tanner at real-time.com>:
> I must be missing something simple?
>
> During "make install" I only want to install a set of files if the do not
> exist in destination.
>
> MACRO (COPY_IF_DOES_NOT_EXIST SOURCE DESTINATION)
>        ADD_CUSTOM_COMMAND (
>                TARGET COPY
>                IF (NOT EXISTS ${DESTINATION})
>                        COMMAND ${CMAKE_COMMAND} -E copy ${SOURCE}
> ${DESTINATION}
>                ENDIF (NOT EXISTS ${DESTINATION})
>        )
>
>        ADD_CUSTOM_TARGET (
>                COPY ALL
>                COMMENT "Copy file: ${SOURCE} ${DESTINATION}"
>        )
>
> ENDMACRO (COPY_IF_DOES_NOT_EXIST SOURCE DESTINATION)
>
> Works the first time, but if I delete the destination file a make install
> won't install it again.

With your current macro the file is "installed" at CMake run time and
not during "make install".

You may check that fact if you rerun cmake the file is copied again.

You should look at the install(SCRIPT or install(CODE  command
in order to execute CMake script at "install time".




-- 
Erk
Membre de l'April - « promouvoir et défendre le logiciel libre » -
http://www.april.org


More information about the CMake mailing list