Я использую meson в нескольких проектах C (projectA
и projectB
), где projectB
ссылается на библиотеку из projectA
. В projectA/meson.build
я написал pkg-config
projectA.pc
файл, используя meson, который, как и ожидалось, установлен в join_paths(get_option('prefix'), get_option('libdir'), 'pkgconfig')
.
В projectB/meson.build
я использую dependency('projectA')
для поиска projectA.pc
файла.
Когда я использую специальный префикс установки для сборки projectA
и projectB
, meson
не может найти projectA.pc
при сборке projectB
. Есть ли способ указать PKG_CONFIG_PATH
от projectB/meson.build
?
Эта проблема воспроизводится на следующем минимальном примере:
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')
?
Я пытался установить переменную среды внутри вызова meson 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)
К сожалению, аргумент env:
в зависимости игнорируется (его нет в документации).
Добавление каталога $ {prefix} / $ {libdir} / pkgconfig к PKG_CONFIG_PATH от meson имеет для меня смысл. Есть способ сделать это?