Browse Source

exec_program: Add example how to upgrade to execute_process()

This hopefully helps a bit when upgrading CMake code that uses
`exec_program()` command.

Changes:
- Used third-person phrasing for the command description.
- The `exec_program()` command arguments in signature updated a bit.
- Mention of CMakeLists.txt file removed as this command also worked in
  CMake scripts and other modes.
- Added examples section.
Peter Kokot 1 year ago
parent
commit
7b79c2b39d
1 changed files with 42 additions and 9 deletions
  1. 42 9
      Help/command/exec_program.rst

+ 42 - 9
Help/command/exec_program.rst

@@ -9,22 +9,55 @@ exec_program
 
   Use the :command:`execute_process` command instead.
 
-Run an executable program during the processing of the CMakeList.txt
-file.
+Runs an executable program during the processing of a CMake file or script:
 
 .. code-block:: cmake
 
-  exec_program(Executable [directory in which to run]
-               [ARGS <arguments to executable>]
-               [OUTPUT_VARIABLE <var>]
-               [RETURN_VALUE <var>])
+  exec_program(
+    <executable>
+    [<working-dir>]
+    [ARGS <arguments-to-executable>...]
+    [OUTPUT_VARIABLE <var>]
+    [RETURN_VALUE <var>]
+  )
 
-The executable is run in the optionally specified directory.  The
+The ``<executable>`` is run in the optionally specified directory
+``<working-dir>``.  The
 executable can include arguments if it is double quoted, but it is
 better to use the optional ``ARGS`` argument to specify arguments to the
-program.  This is because cmake will then be able to escape spaces in
+executable program.  This is because CMake will then be able to escape spaces in
 the executable path.  An optional argument ``OUTPUT_VARIABLE`` specifies a
 variable in which to store the output.  To capture the return value of
 the execution, provide a ``RETURN_VALUE``.  If ``OUTPUT_VARIABLE`` is
 specified, then no output will go to the stdout/stderr of the console
-running cmake.
+running CMake.
+
+Examples
+^^^^^^^^
+
+Example of the legacy ``exec_program()`` command used in earlier versions of
+CMake:
+
+.. code-block:: cmake
+
+  exec_program(
+    some_command
+    ${dir}
+    ARGS arg_1 arg_2 args "\"<quoted-arg>\""
+    OUTPUT_VARIABLE output
+    RETURN_VALUE result
+  )
+
+A direct equivalent replacement of the previous example using the
+:command:`execute_process` command in new code:
+
+.. code-block:: cmake
+
+  execute_process(
+    COMMAND some_command arg_1 arg_2 args "<quoted-arg>"
+    WORKING_DIRECTORY ${dir}
+    RESULT_VARIABLE result
+    OUTPUT_VARIABLE output
+    ERROR_VARIABLE output
+    OUTPUT_STRIP_TRAILING_WHITESPACE
+  )