diff options
author | Brad King <brad.king@kitware.com> | 2024-01-27 15:10:03 (GMT) |
---|---|---|
committer | Kitware Robot <kwrobot@kitware.com> | 2024-01-27 15:10:09 (GMT) |
commit | 84dd192326d8df4b3c0bc6aa14980a52e7ca36a5 (patch) | |
tree | ac7bcb8d94570c03b72ce8375b02f261edd6e562 /Help | |
parent | 98d065740ef47a8da859751430c04284b1e3d9e5 (diff) | |
parent | 682a513bbb5a6b6e09b273e201818d04d3e155b4 (diff) | |
download | CMake-84dd192326d8df4b3c0bc6aa14980a52e7ca36a5.zip CMake-84dd192326d8df4b3c0bc6aa14980a52e7ca36a5.tar.gz CMake-84dd192326d8df4b3c0bc6aa14980a52e7ca36a5.tar.bz2 |
Merge topic 'doc-configure_file'
682a513bbb Help: Organize configure_file documentation into sections
Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Craig Scott <craig.scott@crascit.com>
Merge-request: !9191
Diffstat (limited to 'Help')
-rw-r--r-- | Help/command/configure_file.rst | 140 |
1 files changed, 77 insertions, 63 deletions
diff --git a/Help/command/configure_file.rst b/Help/command/configure_file.rst index 07dc2e1..7200c24 100644 --- a/Help/command/configure_file.rst +++ b/Help/command/configure_file.rst @@ -1,6 +1,10 @@ configure_file -------------- +.. only:: html + + .. contents:: + Copy a file to another location and modify its contents. .. code-block:: cmake @@ -11,11 +15,79 @@ Copy a file to another location and modify its contents. [COPYONLY] [ESCAPE_QUOTES] [@ONLY] [NEWLINE_STYLE [UNIX|DOS|WIN32|LF|CRLF] ]) -Copies an ``<input>`` file to an ``<output>`` file and substitutes -variable values referenced as ``@VAR@``, ``${VAR}``, ``$CACHE{VAR}`` or -``$ENV{VAR}`` in the input file content. Each variable reference will be -replaced with the current value of the variable, or the empty string if -the variable is not defined. Furthermore, input lines of the form +Copies an ``<input>`` file to an ``<output>`` file while performing +`transformations`_ of the input file content. + +If the input file is modified the build system will re-run CMake to +re-configure the file and generate the build system again. +The generated file is modified and its timestamp updated on subsequent +cmake runs only if its content is changed. + +Options +^^^^^^^ + +The options are: + +``<input>`` + Path to the input file. A relative path is treated with respect to + the value of :variable:`CMAKE_CURRENT_SOURCE_DIR`. The input path + must be a file, not a directory. + +``<output>`` + Path to the output file or directory. A relative path is treated + with respect to the value of :variable:`CMAKE_CURRENT_BINARY_DIR`. + If the path names an existing directory the output file is placed + in that directory with the same file name as the input file. + If the path contains non-existent directories, they are created. + +``NO_SOURCE_PERMISSIONS`` + .. versionadded:: 3.19 + + Do not transfer the permissions of the input file to the output file. + The copied file permissions default to the standard 644 value + (-rw-r--r--). + +``USE_SOURCE_PERMISSIONS`` + .. versionadded:: 3.20 + + Transfer the permissions of the input file to the output file. + This is already the default behavior if none of the three permissions-related + keywords are given (``NO_SOURCE_PERMISSIONS``, ``USE_SOURCE_PERMISSIONS`` + or ``FILE_PERMISSIONS``). The ``USE_SOURCE_PERMISSIONS`` keyword mostly + serves as a way of making the intended behavior clearer at the call site. + +``FILE_PERMISSIONS <permissions>...`` + .. versionadded:: 3.20 + + Ignore the input file's permissions and use the specified ``<permissions>`` + for the output file instead. + +``COPYONLY`` + Copy the file without replacing any variable references or other + content. This option may not be used with ``NEWLINE_STYLE``. + +``ESCAPE_QUOTES`` + Escape any substituted quotes with backslashes (C-style). + +``@ONLY`` + Restrict variable replacement to references of the form ``@VAR@``. + This is useful for configuring scripts that use ``${VAR}`` syntax. + +``NEWLINE_STYLE <style>`` + Specify the newline style for the output file. Specify + ``UNIX`` or ``LF`` for ``\n`` newlines, or specify + ``DOS``, ``WIN32``, or ``CRLF`` for ``\r\n`` newlines. + This option may not be used with ``COPYONLY``. + +Transformations +^^^^^^^^^^^^^^^ + +:ref:`Variables <CMake Language Variables>` referenced in the input +file content as ``@VAR@``, ``${VAR}``, ``$CACHE{VAR}``, and +:ref:`environment variables <CMake Language Environment Variables>` +referenced as ``$ENV{VAR}``, will each be replaced with the current value +of the variable, or the empty string if the variable is not defined. +Furthermore, input lines of the form .. code-block:: c @@ -79,64 +151,6 @@ which may lead to undefined behavior. # define VAR # define VAR 1 -If the input file is modified the build system will re-run CMake to -re-configure the file and generate the build system again. -The generated file is modified and its timestamp updated on subsequent -cmake runs only if its content is changed. - -The arguments are: - -``<input>`` - Path to the input file. A relative path is treated with respect to - the value of :variable:`CMAKE_CURRENT_SOURCE_DIR`. The input path - must be a file, not a directory. - -``<output>`` - Path to the output file or directory. A relative path is treated - with respect to the value of :variable:`CMAKE_CURRENT_BINARY_DIR`. - If the path names an existing directory the output file is placed - in that directory with the same file name as the input file. - If the path contains non-existent directories, they are created. - -``NO_SOURCE_PERMISSIONS`` - .. versionadded:: 3.19 - - Do not transfer the permissions of the input file to the output file. - The copied file permissions default to the standard 644 value - (-rw-r--r--). - -``USE_SOURCE_PERMISSIONS`` - .. versionadded:: 3.20 - - Transfer the permissions of the input file to the output file. - This is already the default behavior if none of the three permissions-related - keywords are given (``NO_SOURCE_PERMISSIONS``, ``USE_SOURCE_PERMISSIONS`` - or ``FILE_PERMISSIONS``). The ``USE_SOURCE_PERMISSIONS`` keyword mostly - serves as a way of making the intended behavior clearer at the call site. - -``FILE_PERMISSIONS <permissions>...`` - .. versionadded:: 3.20 - - Ignore the input file's permissions and use the specified ``<permissions>`` - for the output file instead. - -``COPYONLY`` - Copy the file without replacing any variable references or other - content. This option may not be used with ``NEWLINE_STYLE``. - -``ESCAPE_QUOTES`` - Escape any substituted quotes with backslashes (C-style). - -``@ONLY`` - Restrict variable replacement to references of the form ``@VAR@``. - This is useful for configuring scripts that use ``${VAR}`` syntax. - -``NEWLINE_STYLE <style>`` - Specify the newline style for the output file. Specify - ``UNIX`` or ``LF`` for ``\n`` newlines, or specify - ``DOS``, ``WIN32``, or ``CRLF`` for ``\r\n`` newlines. - This option may not be used with ``COPYONLY``. - Example ^^^^^^^ |