[③Meson]: run_command()命令使用
2023-12-28 14:34:33
前言
在Meson构建系统中可以使用run_command()和find_program()命令组合来实现执行一些shell命令等功能。
首先来看下run_command()命令的简介:
# Runs the command specified in positional arguments
runresult run_command(
str | file | external_program command..., # The command to execute during the setup process
# Keyword arguments:
capture : bool # If `true`, any output generated on stdout will be captured and returned by
check : bool # If `true`, the exit status code of the command will be checked,
env : env | list[str] | dict[str] # environment variables to set,
)
它顾明思意就是执行一条命令,命令可以来自find_program(),files()和configure_file()。
arguments:
- capture:布尔类型,从0.47版本后默认为true,如果为true的话,命令结果可以使用stdout正常输出,如果为false,stdout输出的是空字符串。
- check:布尔类型,从0.47版本后默认为false,如果为true的话会去检查被执行的命令是否存在。
find_program()命令的简介:
# `program_name` here is a string that can be an executable or script
external_program find_program(
str | file program_name, # The name of the program to search, or a file object to be used
str | file fallback..., # These parameters are used as fallback names to search for
# Keyword arguments:
default_options : list[str] | dict[str | bool | int | list[str]] # An array of default option values
dirs : list[str] # extra list of absolute paths where to look for program names
disabler : bool # If `true` and the program couldn't be found, return a disabler object
native : bool # Defines how this executable should be searched
required : bool | feature # When `true`, Meson will abort if no program can be found
version : str # specifies the required version, see
)
样例1
下面为使用的一个例子,使用shell命令cat或者more从VERSION文件中读出版本信息内容,然后输出:
version = run_command(find_program('cat', 'more'),
files('VERSION'), check: true).stdout().strip()
message(version)
VERSION的内容为:
然后配置Meson的话就能看到如下的输出:
样例2
使用python编译命令,将print()中的内容作为message输出:
python3 = import('python').find_installation(required: false)
prompt = run_command(python3, '-c', 'import os; print("hello world")', check: false).stdout().strip()
message(prompt)
然后配置Meson的话就能看到如下的输出:
文章来源:https://blog.csdn.net/Eng_ingLi/article/details/135266746
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!