Как получить библиотечные пути мезонной зависимости?

#libraries #meson-build #build-dependencies

Вопрос:

Пример использования: у меня есть зависимость, которая возвращается к подпроекту:

 ./
./subprojects/
./subprojects/mylib.wrap
 

src/meson.build содержит:

 mylib_dep = dependency('mylib')  # Searches for mylib with pkg-config then fall backs to mylib.wrap.
myexec_exe = executable ('myexec', 'myexec.c', dependencies : mylib_dep)
 

Зависимость mylib_dep предоставляет библиотеки, которые, если они не установлены в системе, делают основной исполняемый файл моего проекта непригодным для использования:

 $ meson build amp;amp; cd build amp;amp; meson compile src/my_exec
...snip'd...
$ src/my_exec
src/my_exec: error while loading shared libraries: libmylib.so: cannot open shared object file: No such file or directory
 

Мой тестовый сценарий build/tests/mytests.sh configure_file d от tests/mytests.sh.in , чтобы указать местоположение myexec , и я хотел бы передать ему пути к библиотеке, чтобы он мог настроить LD_LIBRARY_PATH и запустить исполняемый файл. Например, в tests/meson.build :

 conf_data = configuration_data ()
conf_data.set_quoted ('MYEXEC_PATH', myexec_exe.full_path ())
conf_data.set_quoted ('MYLIB_PATH', mylib_dep.??????)
mytest_exe = configure_file (input : 'mytests.sh.in', output : 'mytests.sh', configuration : conf_data)
 

и в tests/mytests.sh.in :

 MYEXEC_PATH=@MYEXEC_PATH@
MYLIB_PATH=@MYLIB_PATH@
export LD_LIBRARY_PATH=$(dirname "$MYLIB_PATH"):$LD_LIBRARY_PATH
$MYEXEC_PATH
 

Вопрос: Что должно быть ?????? сделано выше? Другими словами, учитывая объект зависимости, как я могу извлечь из него библиотеки и получить их полные пути?

Комментарии:

1. Видишь это

2. @droptop: У меня есть, спасибо, я не уверен, как это отвечает на вопрос.

Ответ №1:

Обычно в meson вы не настраивали бы этот файл, вы передавали бы библиотеку/исполняемые файлы сценарию в качестве аргументов в тестовой команде:

 test(
  'mytest',
  find_program('mytest.sh')
  args : [executable_target, library_target, ...],
)
 

Комментарии:

1. Спасибо за ответ. Я не уверен, как это помогает, хотя: я все еще не знаю, как извлечь путь к библиотеке из объекта зависимости.