外部命令
作为软件配置的一部分,您可能希望通过运行外部命令来获取额外的数据。基本语法如下。
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
调用它。
搜索结果为