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.conf 的 tools.gnu:pkg_config
以定义 pkg_config
可执行文件名称或完整路径。默认情况下,它为 pkg-config
。