跳到主要内容

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 目录,而是分两次调用该函数分别配置。

核心逻辑

该函数会完成以下关键操作:

  1. 定位 pkg-config 程序
    自动检测并设置 PKG_CONFIG 环境变量,指向 kmpkg 宿主环境中已安装的有效 pkg-config 可执行文件,确保后续构建流程能正确调用 pkg-config 工具。

  2. 修改 PKG_CONFIG_PATH
    BASE_DIRS 中的每个目录,将 <目录>/lib<目录>/share 子目录前置PKG_CONFIG_PATH 环境变量中(两个子目录的顺序未指定)。
    (pkg-config 的 .pc 配置文件通常存放在 lib/pkgconfigshare/pkgconfig 目录下,前置这些路径可让 pkg-config 优先搜索 kmpkg 安装包的配置文件)。

  3. 备份原始环境
    修改环境变量前,会自动备份 PKG_CONFIGPKG_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()

关联函数

源码

scripts/cmake/z_kmpkg_setup_pkgconfig_path.cmake