[CMake] How to set Overwrite or no over write in install(FILES ....)?
hce
jupiter.hce at gmail.com
Mon Mar 11 06:12:10 EDT 2013
Andreas Stahl wrote
> Hello Jupiter,
>
> can you post the error message here? I wasn't aware that install(FILES
> ...) did any checking besides comparing the dates and overwriting if the
> file to be installed is newer.
> Also, you misunderstood what Petr meant. You need to escape the quotes in
> the install(CODE "...") call, because you're effectively writing a string
> to a file, i.e.:
>
> install(CODE "
> if (NOT EXISTS \"${destination}/myfile.txt\")
> install(FILES \"${source}/myfile.txt\" DESTINATION ${destination})
> endif()
> ")
>
> BUT: using install inside an install command smells like problems, so you
> better use the file(INSTALL...) directive, anyway:
>
> install(CODE "
> if (NOT EXISTS \"${destination}/myfile.txt\")
> file(INSTALL \"${source}/myfile.txt\" DESTINATION
> \"${destination}\")
> endif()
> ")
>
> using the SCRIPT signature expects a cmake script file that will be
> included in the cmake_install.cmake script file. This means you would need
> to configure your paths in your cmakelists file
>
> configure_file(myfile_install.cmake.in myfile_install.cmake)
> install(SCRIPT myfile_install.cmake)
>
> and in myfile_install.cmake.in you'd put
>
> if(NOT EXISTS "${destination}/myfile.txt")
> file(INSTALL "${source}/myfile.txt" DESTINATION "${destination}")
> endif()
>
> Hope that helps,
>
> Andreas
Ahh, that's tricky, the file(INSTALL ....) works. Thank you so much Andreas,
and thanks Petr for your kind helps.
Cheers.
Jupiter
--
View this message in context: http://cmake.3232098.n2.nabble.com/How-to-set-Overwrite-or-no-over-write-in-install-FILES-tp7583548p7583569.html
Sent from the CMake mailing list archive at Nabble.com.
More information about the CMake
mailing list