依赖对象 (dep)

依赖的抽象表示

依赖对象由以下函数和方法返回

依赖对象方法

只有使用 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 的值更改为 valuevalue 参数是可选的,默认为 '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

新值。 有关支持的值,请参阅 dependency()

[可选]


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]

您还可以通过将列表传递给此关键字参数来重新定义变量,这可能会影响检索到的变量:['prefix', '/'])

(自 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

此参数用作 cmakepkgconfigconfigtoolinternalsystem 关键字参数的默认值。 它在 pkgconfiginternal 使用相同变量名的常见情况下很有用,在这种情况下,写 dep.get_variable('foo') 比写 dep.get_variable(pkgconfig: 'foo', internal: 'foo') 更容易。

(自 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]

参见 dep.get_pkgconfig_variable()

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

default = false

includes bool

是否包含 includes

default = false

sources bool

是否包含 sources

default = false


dep.type_name()

返回描述依赖项类型的字符串,最常见的值是使用 declare_dependency() 创建的 dep 的 internal 以及使用 Pkg-config 获取的系统依赖项的 pkgconfig

签名

str type_name()


dep.version()

版本号作为字符串,例如 1.2.8。 如果依赖项提供者不支持确定版本,则为 unknown

签名

str version()


搜索结果是