blob: 7925c210608ddf8c617638a8f25cbfa2d09d9d22 [file] [log] [blame] [edit]
exec_program
------------
.. versionchanged:: 3.28
This command is available only if policy :policy:`CMP0153` is not set to ``NEW``.
Port projects to the :command:`execute_process` command.
.. deprecated:: 3.0
Use the :command:`execute_process` command instead.
Runs an executable program during the processing of a CMake file or script:
.. code-block:: cmake
exec_program(
<executable>
[<working-dir>]
[ARGS <arguments-to-executable>...]
[OUTPUT_VARIABLE <var>]
[RETURN_VALUE <var>]
)
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
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.
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
)