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
)