mirror of
https://github.com/Kitware/CMake.git
synced 2025-10-14 19:08:07 +08:00

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.
64 lines
1.7 KiB
ReStructuredText
64 lines
1.7 KiB
ReStructuredText
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
|
|
)
|