On 07/22/2014 07:44 AM, Stephen Kelly wrote: > Daniele E. Domenichelli wrote: >> By the way, is there a reason why file(COPY) does not have an option to >> copy the file only if the file(s) is(are) different. > > configure_file(COPY_ONLY) does that. file(COPY_IF_DIFFERENT) would just do > the same thing but would be more discoverable and might be a good idea.
Our file(INSTALL) command used by scripts for "make install" at one time did do a copy-if-different but for incremental re-installations it spent a very long time comparing content. It was decided instead to make the re-copy decision based only on the file timestamp comparison. This makes it very fast. The file(COPY) command is just a binding to file(INSTALL) that does not print status messages and has slightly different defaults. The file(COPY) command already has many keyword options, so a new COPY_IF_DIFFERENT to request the time-consuming comparison could be added. >> Since you were asking if CMake misses some important feature, I believe >> that a very useful feature to have would be to be able to have an option >> for the install(FILES/PROGRAMS/DIRECTORY) command that reproduces the >> install tree in the binary directory > > Yes, seems like something worth investigating. I don't think we need to have a build tree, install-in-build-tree, and install-tree all managed by a single build tree. Things like INSTALL_RPATH do not make sense when there are two possible "install" locations. An install-in-build-tree directory is not easily defined in multi-config generators. If you want to test installation then set CMAKE_INSTALL_PREFIX to $build/prefix or something and use the normal "make install" target. Some projects also arrange their layout within the build tree to look like the install tree by setting CMAKE_RUNTIME_OUTPUT_DIRECTORY[_<CONFIG>] and related variables appropriately. Returning to CMakePackageConfigHelpers, I work on several projects that provide one <pkg>Config.cmake file in the build tree and one in the install tree. They are generated by hand. I do not use CMakePackageConfigHelpers. IMO it is good for getting projects started without having to learn all the details. For mature projects that want to do fancy things like supporting applications from the build tree, manual generation of the package configuration files becomes worthwhile. -Brad -- 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-developers