跳到主要内容

x_kmpkg_pkgconfig_get_modules

本节介绍 kmpkg的一项实验性功能,该功能可能随时变更或被移除。

从 pkgconfig 模块中检索所需的模块信息(编译标志、库路径、头文件路径等)。

用法

x_kmpkg_pkgconfig_get_modules(
PREFIX <prefix>
MODULES <pkgconfig_modules>...
[CFLAGS]
[LIBS]
[LIBRARIES]
[LIBRARIES_DIRS]
[INCLUDE_DIRS]
)

参数

PREFIX

所有输出变量的统一前缀。函数会基于该前缀生成 {PREFIX}_{XXX}_{RELEASE/DEBUG} 格式的输出变量,用于区分不同类型、不同构建模式的结果。

MODULES

需要检索信息的 pkgconfig 模块列表(例如 zlibopenssl 等)。

CFLAGS

(文档未明确具体行为,推测为返回 pkg-config --cflags 的结果)
生成 <prefix>_CFLAGS_RELEASE<prefix>_CFLAGS_DEBUG 变量,分别存储 Release/Debug 构建模式下 pkg-config --cflags 命令的输出(编译相关标志)。

LIBS

生成 <prefix>_LIBS_RELEASE<prefix>_LIBS_DEBUG 变量,分别存储 Release/Debug 构建模式下 pkg-config --libs 命令的输出(完整的链接标志,包含库路径、库名等)。

LIBRARIES

生成 <prefix>_LIBRARIES_RELEASE<prefix>_LIBRARIES_DEBUG 变量,分别存储 Release/Debug 构建模式下 pkg-config --libs-only-l 命令的输出(仅包含库名,如 -lz-lssl)。

LIBRARIES_DIRS

生成 <prefix>_LIBRARIES_DIRS_RELEASE<prefix>_LIBRARIES_DIRS_DEBUG 变量,分别存储 Release/Debug 构建模式下 pkg-config --libs-only-L 命令的输出(仅包含库搜索路径,如 -L/usr/lib)。

INCLUDE_DIRS

生成 <prefix>_INCLUDE_DIRS_RELEASE<prefix>_INCLUDE_DIRS_DEBUG 变量,分别存储 Release/Debug 构建模式下 pkg-config --cflags-only-I 命令的输出(仅包含头文件搜索路径,如 -I/usr/include)。

示例

基础用法(获取 zlib 的库和头文件信息)

# 检索 zlib 的库信息和头文件路径
x_kmpkg_pkgconfig_get_modules(
PREFIX ZLIB
MODULES zlib
LIBS
INCLUDE_DIRS
)

# 使用获取到的变量(以 Release 为例)
message("ZLIB 头文件路径:${ZLIB_INCLUDE_DIRS_RELEASE}")
message("ZLIB 链接标志:${ZLIB_LIBS_RELEASE}")

官方示例参考

  • qt5-base(实际项目中该函数的应用场景)

源码

ports/kmpkg-pkgconfig-get-modules/x_kmpkg_pkgconfig_get_modules.cmake