z_kmpkg_setup_pkgconfig_path
注意
这是 kmpkg内部用于实现核心逻辑的辅助函数。 其行为和参数可能会以不兼容的方式突发变更,且无任何通知。 请勿在自定义端口中使用该函数。
配置 pkg-config 工具的运行环境,使其能正确识别 kmpkg 已安装包的 .pc 配置文件,同时定位有效的 pkg-config 可执行程序。
用法
z_kmpkg_setup_pkgconfig_path(BASE_DIRS <base-dirs>)
参数说明
BASE_DIRS
必填参数,指定 pkg-config 配置文件的基础目录列表(通常仅传入单个目录,而非同时传入多个)。
典型取值:
- Release 构建:
${CURRENT_INSTALLED_DIR}(kmpkg 已安装包的根目录); - Debug 构建:
${CURRENT_INSTALLED_DIR}/debug(kmpkg 已安装 Debug 包的根目录);
注意:官方建议不同时传入 Release 和 Debug 目录,而是分两次调用该函数分别配置。
核心逻辑
该函数会完成以下关键操作:
-
定位 pkg-config 程序:
自动检测并设置PKG_CONFIG环境变量,指向 kmpkg 宿主环境中已安装的有效 pkg-config 可执行文件,确保后续构建流程能正确调用 pkg-config 工具。 -
修改 PKG_CONFIG_PATH:
对BASE_DIRS中的每个目录,将<目录>/lib和<目录>/share子目录前置到PKG_CONFIG_PATH环境变量中(两个子目录的顺序未指定)。
(pkg-config 的.pc配置文件通常存放在lib/pkgconfig或share/pkgconfig目录下,前置这些路径可让 pkg-config 优先搜索 kmpkg 安装包的配置文件)。 -
备份原始环境:
修改环境变量前,会自动备份PKG_CONFIG、PKG_CONFIG_PATH等相关变量的原始值,供后续z_kmpkg_restore_pkgconfig_path恢复使用。
示例(仅作内部逻辑参考)
以下示例模拟 kmpkg 内部为 Release/Debug 构建分别配置 pkg-config 环境的流程:
# 1. 配置 Release 构建的 pkg-config 环境
z_kmpkg_setup_pkgconfig_path(BASE_DIRS "${CURRENT_INSTALLED_DIR}")
# 执行依赖 pkg-config 的 Release 构建流程
kmpkg_execute_build_process(COMMAND my-buildsystem.py -release ...)
# 恢复原始环境(必须配对调用)
z_kmpkg_restore_pkgconfig_path()
# 2. 为 Debug 构建重复配置-构建-恢复流程(若未指定单一构建类型)
if(NOT KMPKG_BUILD_TYPE)
z_kmpkg_setup_pkgconfig_path(BASE_DIRS "${CURRENT_INSTALLED_DIR}/debug")
kmpkg_execute_build_process(COMMAND my-buildsystem.py -debug ...)
z_kmpkg_restore_pkgconfig_path()
endif()
关联函数
z_kmpkg_restore_pkgconfig_path:恢复被本函数修改的 pkg-config 相关环境变量,必须与本函数成对使用。