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 的控制台的标准输出/标准错误。

示例

早期版本 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
)