外部命令

作为软件配置的一部分,您可能希望通过运行外部命令来获取额外的数据。基本语法如下。

r = run_command('command', 'arg1', 'arg2', 'arg3', check: true)
output = r.stdout().strip()
errortxt = r.stderr().strip()

如果提供 check: true,则如果 command 返回非零退出代码,Meson 将出错。或者,您可以设置 check: false 并使用 r.returncode() 获取退出代码。

从 0.52.0 开始,您可以将命令环境作为字典传递

run_command('command', 'arg1', 'arg2', env: {'FOO': 'bar'}, check: true)

从 0.50.0 开始,您还可以传递命令的 env 对象

env = environment()
env.set('FOO', 'bar')
run_command('command', 'arg1', 'arg2', env: env)

run_command 函数返回一个对象,可以查询其返回值以及写入标准输出和标准错误的文本。strip 方法调用用于从字符串中去除前导和尾随空格。通常,命令行程序的输出以换行符结尾,而在字符串变量中则不需要。第一个参数可以是字符串或您之前使用 find_program 检测到的可执行文件。

Meson 将自动检测带有 Shebang 行的脚本,并在 Windows 和 Unix 上使用其中指定的可执行文件/解释器运行它们。

请注意,您不能将命令行作为单个字符串传递。也就是说,调用 run_command('do_something foo bar') 将不起作用。您必须将字符串拆分为单独的参数,或者将拆分的命令作为数组传递。还应注意,Meson 不会将命令传递给 Shell,因此尝试使用环境变量、反引号或管道之类的任何命令行将不起作用。如果您需要 Shell 语义,请将您的命令写入脚本文件并使用 run_command 调用它。

搜索结果为