PkgConfig

此工具可以执行 pkg_config 可执行文件以从现有的 .pc 文件中提取信息。例如,这对于在某些系统安装的库上创建“系统”包配方很有用,作为一种从系统自动提取 .pc 信息的方法。或者,如果某些专有包的构建系统只输出 .pc 文件。

用法

读取 pc 文件并访问信息

pkg_config = PkgConfig(conanfile, "libastral", pkg_config_path=<somedir>)

print(pkg_config.provides) # something like"libastral = 6.6.6"
print(pkg_config.version) # something like"6.6.6"
print(pkg_config.includedirs) # something like['/usr/local/include/libastral']
print(pkg_config.defines) # something like['_USE_LIBASTRAL']
print(pkg_config.libs) # something like['astral', 'm']
print(pkg_config.libdirs) # something like['/usr/local/lib/libastral']
print(pkg_config.linkflags) # something like['-Wl,--whole-archive']
print(pkg_config.variables['prefix']) # something like'/usr/local'

使用 pc 文件信息填充 cpp_info 对象

def package_info(self):
    pkg_config = PkgConfig(conanfile, "libastral", pkg_config_path=tmp_dir)
    pkg_config.fill_cpp_info(self.cpp_info, is_system=False, system_libs=["m", "rt"])

参考

class PkgConfig(conanfile, library, pkg_config_path=None)
参数:
  • conanfile – 当前配方对象。始终使用 self

  • library – 要解析的 .pc 文件所属的库。它必须存在于 pkg_config 路径中。

  • pkg_config_path – 如果定义,它将被添加到 PKG_CONFIG_PATH 环境变量的开头,以便执行找到所需文件。

fill_cpp_info(cpp_info, is_system=True, system_libs=None)

从 PkgConfig 配置填充 cpp_info 对象的方法

参数:
  • cpp_info – 可以是全局的 (self.cpp_info) 或组件的 (self.components[“foo”].cpp_info)。

  • is_system – 如果为 True,所有检测到的库都将分配给 cpp_info.system_libs,而不是 cpp_info.libs

  • system_libs – 如果为 True,所有检测到的库都将分配给 cpp_info.system_libs,而不是 cpp_info.libs

conf

此助手将侦听来自 global.conftools.gnu:pkg_config 以定义 pkg_config 可执行文件名称或完整路径。默认情况下,它为 pkg-config