zee*_*hio 6 pkg-config meson-build
我在几个 C 项目(projectA和projectB)中使用介子,其中projectB链接到来自projectA. 在 中,我使用介子projectA/meson.build编写了一个文件,该文件已按预期安装。pkg-config projectA.pcjoin_paths(get_option('prefix'), get_option('libdir'), 'pkgconfig')
在projectB/meson.build我用来dependency('projectA')查找projectA.pc文件。
当我使用自定义安装前缀来构建时projectA,projectB构建时meson无法找到。有没有办法指定from ?projectA.pcprojectBPKG_CONFIG_PATHprojectB/meson.build
这个问题通过这个最小的例子重现:
项目A/介子.build:
project('projectA', 'c', version: '1')
pkg = import('pkgconfig')
pkg.generate(name : 'projectA',
description: 'ProjectA',
version: meson.project_version())
Run Code Online (Sandbox Code Playgroud)
项目B/介子.build:
project('projectB', 'c', version: '1')
dep = dependency('projectA')
Run Code Online (Sandbox Code Playgroud)
命令:
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
Run Code Online (Sandbox Code Playgroud)
有没有办法告诉projectB/meson.build应该dependency()调查一下join_paths(get_option('prefix'), get_option('libdir'), 'pkgconfig')?
我试图在介子dependency()调用中设置一个环境变量,但该env参数不存在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)
Run Code Online (Sandbox Code Playgroud)
不幸的是,env:依赖项中的参数被忽略(它在文档中不存在)。
将 ${prefix}/${libdir}/pkgconfig 目录从介子附加到 PKG_CONFIG_PATH 对我来说很有意义。有办法做到吗?
在 IRC 上询问后,我被告知PKG_CONFIG_PATH应该由用户(而不是我)设置,因此介子没有提供更改它的方法。
在这种情况下,最好的方法是使用子项目或包装,以便介子立即处理所有事情。
| 归档时间: |
|
| 查看次数: |
6753 次 |
| 最近记录: |