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。