Ich verwende Meson in ein paar C-Projekten (projectA
und projectB
), wo projectB
Links zu einer Bibliothek von projectA
. In projectA/meson.build
habe ich eine pkg-config
projectA.pc
Datei mit Meson geschrieben, die wie erwartet auf join_paths(get_option('prefix'), get_option('libdir'), 'pkgconfig')
installiert ist.Set PKG_CONFIG_PATH innerhalb von meson.build
In projectB/meson.build
verwende ich dependency('projectA')
, um nach der Datei projectA.pc
zu suchen.
Wenn ich eine benutzerdefinierte Installation Präfix projectA
und projectB
zu bauen meson
ist nicht in der Lage projectA.pc
zu finden, wenn projectB
Gebäude. Gibt es eine Möglichkeit, eine PKG_CONFIG_PATH
von projectB/meson.build
zu spezifizieren?
Dieses Problem wird reproduzieren mit diesem minimal Beispiel:
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')
Befehle :
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
Gibt es eine Möglichkeit projectB/meson.build
zu sagen, dass dependency()
in join_paths(get_option('prefix'), get_option('libdir'), 'pkgconfig')
aussehen sollte?
Ich habe versucht, eine Umgebungsvariable in der Meson dependency()
Rufaufbau haben, aber das env
Argument existiert nicht für dependency()
:
pkgconfigpath = join_paths(get_option('prefix'), get_option('libdir'), 'pkgconfig')
message('pkgconfig: @[email protected]'.format(pkgconfigpath))
env_pkgconfig = environment()
env_pkgconfig.set('PKG_CONFIG_PATH', pkgconfigpath)
projectA_dep = dependency('projectA', env: env_pkgconfig)
Leider ist das env:
Argument in Abhängigkeit ignoriert (es existiert nicht in die Dokumente).
Das Hinzufügen von $ {Präfix}/$ {libdir}/pkgconfig-Verzeichnis zu PKG_CONFIG_PATH von Meson macht für mich Sinn. Gibt es einen Weg, es zu tun?