Hello Paul, Many thanks, seems a better solution than mine.
I created a custom target calling my script but doing this way I had to do make install && make install_files, it doesn't look good. Also had to change install(FILES) to file( COPY ). I will try install(SCRIPT) later today. Once again, thanks for the answer. Daniel Yoshizawa. 2017-10-18 20:36 GMT-02:00 paul <pful...@yahoo.com>: > You can use install(CODE) or install(SCRIPT) to run custom cmake code at > install time. The only caveat is the install location is actually > `$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}` instead of just > `${CMAKE_INSTALL_PREFIX}`. This can happen when the user calls `make > DESTDIR=<path>` or during cpack. > > On Wed, 2017-10-18 at 15:03 -0200, Daniel Yoshizawa wrote: > > Hello everyone, > > > > I have a problem and couldn't find a solution over the internet, the > > situation is that I must copy some files at make install, the trick is, I > > must check if the files exists at install time if they don't, I must copy > > the files, otherwise do nothing. > > > > It doesn't feel anywhere near fine to me, but this is what are asking me > to > > do, so there is no other way. > > > > My initial solution was to check if the file don't exist, if so I create > a > > INSTALL command for it, the problem is that it runs at the configuration > > phase and I need something at install or post install, this files have > > nothing to do with the build, are just configuration files or other non- > > related stuff, so no target for them. > > > > One more thing, I know just the cmake basics, so please any help is > welcome. > > > > Below is my original code that create the INSTALL commands at > configuration > > phase. > > > > ------------------------------------------------------------ > ---------------- > > ------------------------------------------------------------ > ---------------- > > ----- > > > > ############################################################ > ################ > > ############## > > # > > # Desc : Files installation script, checks if the file exist on > > destination folder, > > # if so, doesn't overwrite the files. > > # > > # Params : input_file - File path with <source file>:<destination> > > # must be one entry per line following the model above. > > # > > # Obs : It is advised create .in files using ${CMAKE_SOURCE_DIR} to > > describe the path, > > # calling configure_file to generate the correct path. > > # > > # Ref : https://cmake.org/cmake/help/v3.2/command/configure_file.html > > # > > ############################################################ > ################ > > ############## > > > > function (install_files input_file) > > > > MESSAGE("Files to be installed.") > > > > file(STRINGS ${input_file} contents) > > > > foreach(tuple ${contents}) > > string(REPLACE ":" ";" tuple_list ${tuple}) > > list(GET tuple_list 0 source) > > list(GET tuple_list 1 destination) > > > > if(IS_DIRECTORY ${source}) > > install_directory(${source} ${destination}) > > else(IS_DIRECTORY ${source}) > > install_file(${source} ${destination}) > > endif() > > > > endforeach() > > > > endfunction(install_files input_file) > > > > function (install_directory path_to_dir path_to_destination) > > > > file(GLOB folder_files "${path_to_dir}/*") > > > > foreach(filename ${folder_files}) > > > > if(IS_DIRECTORY ${filename}) > > get_filename_component( dir ${filename} NAME ) > > install_directory(${filename} ${path_to_destination}/${dir}) > > else(IS_DIRECTORY ${filename}) > > install_file(${filename} ${path_to_destination}) > > endif() > > > > endforeach(filename) > > > > endfunction(install_directory path_to_dir path_to_destination) > > > > function (install_file path_to_file path_to_destination) > > > > get_filename_component( filename ${path_to_file} NAME ) > > > > if (NOT EXISTS ${path_to_destination}/${filename}) > > MESSAGE("source path : ${path_to_file}") > > MESSAGE("destination path : ${path_to_destination}") > > > > install (FILES "${path_to_file}" > > DESTINATION "${path_to_destination}" > > PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE > > GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE > > ) > > endif() > > > > endfunction (install_file path_to_file path_to_destination) > > > > ------------------------------------------------------------ > ---------------- > > ------------------------------------------------------------ > ---------------- > > ----- > > > > Sorry for any mistakes and many thanks in advance, > > Daniel Yoshizawa. > > -- > > > > Powered by www.kitware.com > > > > Please keep messages on-topic and check the CMake FAQ at: > http://www.cmake.o > > rg/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/ > opensourc > > e/opensource.html > > > > Follow this link to subscribe/unsubscribe: > > http://public.kitware.com/mailman/listinfo/cmake >
-- 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