私は、Cプロジェクト(projectA
とprojectB
)の中でmesonを使用しています。projectA
からprojectB
にライブラリへのリンクがあります。 projectA/meson.build
では、pkg-config
projectA.pc
というファイルを中間子を使用して書いています。これは、期待通りにjoin_paths(get_option('prefix'), get_option('libdir'), 'pkgconfig')
にインストールされています。meson.buildの中にPKG_CONFIG_PATHを設定する
projectB/meson.build
dependency('projectA')
を使用してprojectA.pc
ファイルを探します。
私はprojectA
とprojectB
を構築するために、カスタムインストール接頭辞を使用すると、meson
はprojectB
を構築する際にprojectA.pc
を見つけることができません。 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
dependency()
がjoin_paths(get_option('prefix'), get_option('libdir'), 'pkgconfig')
になりますprojectB/meson.build
ことを伝える方法はありますか?
私は中間子dependency()
コールの内側に設定された環境変数を持ってしようとしていたが、env
引数は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)
残念ながら、依存関係にあるenv:
引数は無視されます(それが存在しませんドキュメント)。
mesonから$ {prefix}/$ {libdir}/pkgconfigディレクトリをPKG_CONFIG_PATHに追加すると意味があります。それを行う方法はありますか?