[CMake] cmp0026, file(GENERATE...), and configure_file

Alan W. Irwin irwin at beluga.phys.uvic.ca
Thu Apr 23 06:13:02 EDT 2015


On 2015-04-21 15:54-0400 David Cole wrote:

> I can only imagine that would cause IMMENSE problems.

Good point about keeping backwards compatibility, but your shift key
got stuck.  :-)

>
> I depend on configure_file being an immediate action in many many many
> places. (i.e. -- the very next line of code in my CMakeLists.txt file
> can depend on the result of configure_file being on disk and up to
> date at the moment of configure processing...)
>
> Now, having said that, I could imagine you may want to change *some*
> configure_file calls to file(GENERATE calls. Or to enable @@
> substitution in something like an explicit configure_file(GENERATE
> signature.

I think your idea of configure_file(GENERATE...) (where configure_file
occurs at configure-time without GENERATE to be backwards compatible,
but it occurs at generate-time if the new GENERATE signature is used)
is an excellent way to allow users to replace the current clumsiness
that is required to configure a file with both @ symbols and
generator expressions.

And to repeat how bad that clumsiness is, two separate commands
currently have to be used to do the job, and the syntax for those
commands is very different from each other with one having input file
first than output file and the other having those reversed with
special labels for each!  So having the possibility of replacing all
that clumsiness with configure_file(GENERATE...) would be really nice.

And no I don't have the C++ skills or knowledge of the internal
workings of CMake to create a patch to implement that, but I hope a
CMake developer is inspired to do that by this discussion.

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
__________________________


More information about the CMake mailing list