configure_file
--------------

Copy a file to another location and modify its contents.

::

  configure_file(<input> <output>
                 [COPYONLY] [ESCAPE_QUOTES] [@ONLY]
                 [NEWLINE_STYLE [UNIX|DOS|WIN32|LF|CRLF] ])

Copies a file <input> to file <output> and substitutes variable values
referenced in the file content.  If <input> is a relative path it is
evaluated with respect to the current source directory.  The <input>
must be a file, not a directory.  If <output> is a relative path it is
evaluated with respect to the current binary directory.  If <output>
names an existing directory the input file is placed in that directory
with its original name.

If the <input> file is modified the build system will re-run CMake to
re-configure the file and generate the build system again.

This command replaces any variables in the input file referenced as
${VAR} or @VAR@ with their values as determined by CMake.  If a
variable is not defined, it will be replaced with nothing.  If
COPYONLY is specified, then no variable expansion will take place.  If
ESCAPE_QUOTES is specified then any substituted quotes will be C-style
escaped.  The file will be configured with the current values of CMake
variables.  If @ONLY is specified, only variables of the form @VAR@
will be replaced and ${VAR} will be ignored.  This is useful for
configuring scripts that use ${VAR}.

Input file lines of the form "#cmakedefine VAR ..." will be replaced
with either "#define VAR ..." or ``/* #undef VAR */`` depending on
whether VAR is set in CMake to any value not considered a false
constant by the if() command.  (Content of "...", if any, is processed
as above.) Input file lines of the form "#cmakedefine01 VAR" will be
replaced with either "#define VAR 1" or "#define VAR 0" similarly.

With NEWLINE_STYLE the line ending could be adjusted:

::

    'UNIX' or 'LF' for \n, 'DOS', 'WIN32' or 'CRLF' for \r\n.

COPYONLY must not be used with NEWLINE_STYLE.
