依赖对象 (dep
)
依赖的抽象表示
由
依赖对象由以下函数和方法返回
declare_dependency()
dependency()
compiler.find_library()
dep.as_link_whole()
dep.as_shared()
dep.as_static()
dep.as_system()
dep.partial_dependency()
依赖对象方法
dep.as_link_whole()
只有使用 declare_dependency()
创建的依赖项,返回依赖项对象的副本,其中所有 link_with 参数更改为 link_whole。 例如,这对于使用 default_library=static
构建的子项目的回退依赖项很有用。 请注意,所有 link_with
对象都必须是静态库,否则在尝试 link_whole
共享库时会引发错误。
签名
(自 0.56.0 起)
dep as_link_whole()
dep.as_shared()
只有使用 declare_dependency()
创建的依赖项,返回依赖项对象的副本,它更喜欢 both_libraries()
的 shared
版本。
签名
(自 1.6.0 起)
# Only for dependencies created with declare_dependency()
,
dep as_shared(
recursive : bool # If true, this is recursively applied to dependencies
)
参数
方法 dep.as_shared()
接受以下关键字参数
名称 | 类型 | 描述 | 标签 |
---|---|---|---|
recursive |
bool |
如果为 true,则递归应用于依赖项 |
|
dep.as_static()
只有使用 declare_dependency()
创建的依赖项,返回依赖项对象的副本,它更喜欢 both_libraries()
的 static
版本。
签名
(自 1.6.0 起)
# Only for dependencies created with declare_dependency()
,
dep as_static(
recursive : bool # If true, this is recursively applied to dependencies
)
参数
方法 dep.as_static()
接受以下关键字参数
名称 | 类型 | 描述 | 标签 |
---|---|---|---|
recursive |
bool |
如果为 true,则递归应用于依赖项 |
|
dep.as_system()
返回依赖项对象的副本,它已将 include_type
的值更改为 value
。 value
参数是可选的,默认为 'preserve'
。
签名
(自 0.52.0 起)
# Returns a copy of the dependency object, which has changed the value of `include_type`
dep as_system(
str [value], # The new value. See dependency()
for supported values.
)
参数
方法 dep.as_system()
接受以下位置参数
名称 | 类型 | 描述 | 标签 |
---|---|---|---|
value |
str |
新值。 有关支持的值,请参阅 |
[可选] |
dep.found()
返回是否找到了依赖项。
签名
bool found()
dep.get_configtool_variable()
获取配置工具的命令行参数(以 --
为前缀),或者,如果在非配置工具依赖项上调用,则出错。
签名
(自 0.44.0 起)
已弃用
在 0.56.0 中
# Gets the command line argument from the config tool (with `--` prepended), or,
str get_configtool_variable(
str var_name, # Name of the variable to query
)
参数
方法 dep.get_configtool_variable()
接受以下位置参数
名称 | 类型 | 描述 | 标签 |
---|---|---|---|
var_name |
str |
要查询的变量的名称 |
|
dep.get_pkgconfig_variable()
获取指定的 pkg-config 变量,或者,如果在非 pkg-config 依赖项上调用,则出错。
签名
(自 0.36.0 起)
已弃用
在 0.56.0 中
# Gets the pkg-config variable specified,
str get_pkgconfig_variable(
str var_name, # Name of the variable to query
# Keyword arguments:
default : str # The value to return if the variable was not found
define_variable : list[str] # You can also redefine a
)
参数
方法 dep.get_pkgconfig_variable()
接受以下位置参数
名称 | 类型 | 描述 | 标签 |
---|---|---|---|
var_name |
str |
要查询的变量的名称 |
|
最后,dep.get_pkgconfig_variable()
接受以下关键字参数
名称 | 类型 | 描述 | 标签 |
---|---|---|---|
default |
str |
如果未找到变量,则要返回的值。 如果未定义变量并且未设置此关键字参数,则会发出警告。 |
(自 0.45.0 起) |
define_variable |
list [str ] |
您还可以通过将列表传递给此关键字参数来重新定义变量,这可能会影响检索到的变量: (自 1.3.0 起) 可以成对指定多个变量。 |
(自 0.44.0 起) |
dep.get_variable()
一个通用的变量获取器方法,它替换了 get_*type*_variable
方法。 这使您可以从依赖项获取变量,而无需专门了解该依赖项是如何找到的。 如果设置了 default_value
并且无法从对象获取值,则返回 default_value
,如果未设置,则会引发错误。
签名
(自 0.51.0 起)
# A generic variable getter method, which replaces the
str get_variable(
str [varname], # This argument is used as a default value
# Keyword arguments:
cmake : str # The CMake variable name
configtool : str # The configtool variable name
default_value : str # The default value to return when the variable does not exist
internal : str # The internal variable name
pkgconfig : str # The pkgconfig variable name
pkgconfig_define : list[str] # See dep.get_pkgconfig_variable()
system : str # The system variable name
)
在 1.3.0 之前,指定多个 pkgconfig_define 对会导致结果静默地格式错误。 只有第一个变量会被重新定义,但它的值将包含第二个变量名及其值。
参数
方法 dep.get_variable()
接受以下位置参数
名称 | 类型 | 描述 | 标签 |
---|---|---|---|
varname |
str |
此参数用作 |
(自 0.58.0 起) [可选] |
最后,dep.get_variable()
接受以下关键字参数
名称 | 类型 | 描述 | 标签 |
---|---|---|---|
cmake |
str |
CMake 变量名 |
|
configtool |
str |
configtool 变量名 |
|
default_value |
str |
当变量不存在时要返回的默认值 |
|
internal |
str |
内部变量名 |
(自 0.54.0 起) |
pkgconfig |
str |
pkgconfig 变量名 |
|
pkgconfig_define |
list [str ] |
|
|
system |
str |
系统变量名 |
(自 1.6.0 起) |
dep.include_type()
返回 include_type
关键字参数设置的值。
签名
(自 0.52.0 起)
str include_type()
dep.name()
返回搜索的依赖项的名称。 对于使用 declare_dependency()
创建的依赖项,返回 'internal'
。
注意:在 Meson 1.5.0 之前,这并未针对由 compiler.find_library()
返回的 dep 对象实现。
签名
(自 0.48.0 起)
str name()
dep.partial_dependency()
返回一个新的依赖项对象,它具有与调用它的对象的名称、版本、发现状态、类型名称和方法相同的名称、版本、发现状态、类型名称和方法。 此新对象将仅根据关键字参数控制从其父级继承其他属性。
如果父级有任何依赖项,则这些依赖项将使用相同的规则应用于新的部分依赖项。 所以,给定
dep1 = declare_dependency(compile_args : '-Werror=foo', link_with : 'libfoo')
dep2 = declare_dependency(compile_args : '-Werror=bar', dependencies : dep1)
dep3 = dep2.partial_dependency(compile_args : true)
dep3 将向其添加的任何目标的编译器参数添加 ['-Werror=foo', '-Werror=bar']
,但不会将 libfoo 添加到 link_args 中。
以下参数将添加以下属性
- compile_args:传递给编译器的任何参数
- link_args:传递给链接器的任何参数
- links:通过 link_with 或 link_whole 传递的任何内容
- includes:任何 include_directories
- sources:依赖项具有的任何编译或静态源
签名
(自 0.46.0 起)
# Returns a new dependency object with the same name, version, found status,
dep partial_dependency(
compile_args : bool # Whether to include compile_args
includes : bool # Whether to include includes
link_args : bool # Whether to include link_args
links : bool # Whether to include links
sources : bool # Whether to include sources
)
直到 0.50.1,存在一个错误会导致上述行为无法正常工作。
参数
方法 dep.partial_dependency()
接受以下关键字参数
名称 | 类型 | 描述 | 标签 |
---|---|---|---|
compile_args |
bool |
是否包含 compile_args |
|
includes |
bool |
是否包含 includes |
|
link_args |
bool |
是否包含 link_args |
|
links |
bool |
是否包含 links |
|
sources |
bool |
是否包含 sources |
|
dep.type_name()
返回描述依赖项类型的字符串,最常见的值是使用 declare_dependency()
创建的 dep 的 internal
以及使用 Pkg-config 获取的系统依赖项的 pkgconfig
。
签名
str type_name()
dep.version()
版本号作为字符串,例如 1.2.8
。 如果依赖项提供者不支持确定版本,则为 unknown
。
签名
str version()
搜索结果是