While attempting to use the configure_file_generate function discussed in a recent thread here, I discovered a permission deficiency of the file(GENERATE ...) command which was that permissions are not copied from input file to output file like they are with configure_file.
@CMake developers: was this treatment of permissions by design or is this a bug in the implementation of the file(GENERATE...) command that you are willing to fix? Here is my initial (non-working) attempt to work around this issue in my configure_file_generate function. [...] # Configure generator expressions. # N.B. these ${output_file} results will only be available # at generate time. file(GENERATE OUTPUT ${output_file} INPUT ${intermediate_file} ) if(UNIX OR MSYS) # This covers all platforms which have permissions, # i.e., Unix, Cygwin, and MSYS platforms. # Work around bad permission semantics of file(GENERATE...) which # does not copy permissions from input file. Note this --reference # syntax is probably a non-posix extension of the GNU version of chmod. # So this will silently fail to change permissions # on platforms without access to the GNU version of chmod. execute_process( COMMAND chmod --reference=${intermediate_file} ${output_file} ) endif(UNIX OR MSYS) Obviously this workaround does not currently work since execute_process occurs at configure time rather than generate time as can be seen from these results: software@raven> ls -l examples/tk/tk01* -rw-r--r-- 1 software software 3692 Apr 29 15:45 examples/tk/tk01 -rwxr-xr-x 1 software software 3658 Apr 29 15:45 examples/tk/tk01_cf_only* where the first file (with bad permissions) is the ${output_file} and the second file the ${intermediate_file} used in the configure_file_generate function. Is there any method I can use at generate time to change permissions on the OUTPUT file generated by file(GENERATE...), e.g., is there any way I can force execute_process to work at generate time? Of course, I could fix permissions at build time, but that is a big maintenance issue trying to keep track of every file processed by configure_file_generate so I would far prefer to change the permissions at generate time within the configure_file_generate function. Alan __________________________ Alan W. Irwin Astronomical research affiliation with Department of Physics and Astronomy, University of Victoria (astrowww.phys.uvic.ca). Programming affiliations with the FreeEOS equation-of-state implementation for stellar interiors (freeeos.sf.net); the Time Ephemerides project (timeephem.sf.net); PLplot scientific plotting software package (plplot.sf.net); the libLASi project (unifont.org/lasi); the Loads of Linux Links project (loll.sf.net); and the Linux Brochure Project (lbproject.sf.net). __________________________ Linux-powered Science __________________________ -- 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