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>]
)

<executable> 在可选指定的目录 <working-dir> 中运行。如果可执行文件用双引号括起来,则可以包含参数,但最好使用可选的 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
)