exec_program

版本 3.28 更改:只有当策略 CMP0153 未设置为 NEW 时,此命令才可用。将端口项目迁移到 execute_process() 命令。

自版本 3.0 起已弃用:请改用 execute_process() 命令。

在 CMake 文件或脚本处理期间运行一个可执行程序

exec_program(
  <executable>
  [<working-dir>]
  [ARGS <arguments-to-executable>...]
  [OUTPUT_VARIABLE <var>]
  [RETURN_VALUE <var>]
)

在可选指定的目录 <working-dir> 中运行 <executable>。如果可执行程序用双引号括起来,它可以包含参数,但最好使用可选的 ARGS 参数来指定可执行程序的参数。这是因为 CMake 随后能够转义可执行文件路径中的空格。可选参数 OUTPUT_VARIABLE 指定一个变量,用于存储输出。要捕获执行的返回值,请提供一个 RETURN_VALUE。如果指定了 OUTPUT_VARIABLE,则不会有任何输出发送到运行 CMake 的控制台的 stdout/stderr。

示例

早期 CMake 版本中使用的旧版 exec_program() 命令示例

exec_program(
  some_command
  ${dir}
  ARGS arg_1 arg_2 args "\"<quoted-arg>\""
  OUTPUT_VARIABLE output
  RETURN_VALUE result
)

使用 execute_process() 命令在新代码中对先前示例进行直接等效替换

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
)