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 模块列表(例如 zlib、openssl 等)。
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