我在幾個C項目(projectA
和projectB
)中使用介子,其中projectB
從projectA
鏈接到庫。在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
無法找到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())
項目B/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()
調用內部設置,但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:
參數被忽略(它不存在文檔)。
從介子添加$ {prefix}/$ {libdir}/pkgconfig目錄到PKG_CONFIG_PATH對我來說很有意義。有沒有辦法做到這一點?