pkg-config - 在 meson.build 中设置 PKG_CONFIG_PATH

标签 pkg-config meson-build

我在几个 C 项目(projectAprojectB)中使用介子,其中 projectB 链接到 中的库项目A。在 projectA/meson.build 中,我使用介子编写了一个 pkg-config projectA.pc 文件,并将其安装到 join_paths (get_option('prefix'), get_option('libdir'), 'pkgconfig') 如预期。

projectB/meson.build 中,我使用 dependency('projectA') 查找 projectA.pc 文件。

当我使用自定义安装前缀构建 projectAprojectB 时,meson 无法找到 projectA.pc 构建 projectB 时。有没有办法从 projectB/meson.build 指定 PKG_CONFIG_PATH

通过这个最小示例重现此问题:

projectA/meson.build:

project('projectA', 'c', version: '1')

pkg = import('pkgconfig')

pkg.generate(name : 'projectA',
             description: 'ProjectA',
             version: meson.project_version())

projectB/meson.build:

project('projectB', 'c', version: '1')
dep = dependency('projectA')

命令:

meson buildA projectA  --prefix=$PWD/install
(cd buildA && ninja install)
#[0/1] Installing files.
#Installing /tmp/test/buildA/meson-private/projectA.pc to /tmp/test/install/lib/x86_64-linux-gnu/pkgconfig
# [ The error: ]
meson buildB projectB  --prefix=$PWD/install
#Native dependency 'projectA' not found
# [ My workaround: ]
PKG_CONFIG_PATH="$PWD/install/lib/x86_64-linux-gnu/pkgconfig" meson buildB projectB  --prefix=$PWD/install
# Native dependency projectA found: YES 1

有没有办法告诉 projectB/meson.build dependency() 应该查看 join_paths(get_option('prefix'), get_option(' libdir'), 'pkgconfig')

我试图在介子 dependency() 调用中设置环境变量,但 dependency() 参数不存在:

pkgconfigpath = join_paths(get_option('prefix'), get_option('libdir'), 'pkgconfig')
message('pkgconfig: @0@'.format(pkgconfigpath))
env_pkgconfig = environment()
env_pkgconfig.set('PKG_CONFIG_PATH', pkgconfigpath)
projectA_dep = dependency('projectA', env: env_pkgconfig)

不幸的是,依赖项中的 env: 参数被忽略(它在文档中不存在)。

将 ${prefix}/${libdir}/pkgconfig 目录从介子附加到 PKG_CONFIG_PATH 对我来说很有意义。有办法做到吗?

最佳答案

在 IRC 上询问后,我得知 PKG_CONFIG_PATH 应由用户(而不是我)设置,因此 meson 不提供更改它的方法。

在这种情况下,最好的方法是使用子项目或包装,以便介子立即处理所有事情。

关于pkg-config - 在 meson.build 中设置 PKG_CONFIG_PATH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45598164/

相关文章:

opencv - 在 centos 的 pkg-config 搜索路径中找不到包 opencv

static-libraries - 如何使 PKG_CHECK_MODULES 与静态库一起工作?

ffmpeg 安装 : pkg-config can't find package (using Homebrew)

gstreamer - 如何在介子构建中为 dirs 选项提供相对路径以查找第三方库?

c++ - 介子项目 : can I have part of the source located elsewhere?

python - Meson 找不到 pykeepass 模块,我确定它已安装

c - 使用 CMake 查找介子依赖性

autotools - 如何在 AS_IF 中执行多个 if-true 操作?

c++ - 介子找不到交叉编译库

.net - pkg-config 如何决定默认添加哪个查找路径?