#dependencies #meson-build
#зависимости #meson-build
Вопрос:
У меня есть исполняемый файл, который использует IPC в качестве внешнего интерфейса. Я компилирую этот exec, используя систему сборки meson. Внешний заголовок правильно экспортирован.
Я пытаюсь зарегистрировать это с помощью pkgconfig, но модулю pkgconfig нужна библиотека для ссылки. Здесь мне просто нужно объявить экспортированный файл заголовка, мне нужно объявление только для заголовка.
Вот выдержка из файла meson.build:
executable('myexec',
src,
include_directories : inc,
dependencies : deps,
install : true)
myexec = library('myexec')
pkgconfig = import('pkgconfig')
pkgconfig.generate(myexec)
version : '1.0',
subdirs : 'myexec')
install_headers('include/myexec.h',
subdir : 'myexec')
При этом все идет хорошо, за исключением того, что сгенерированные файлы .pc содержат непустое поле Libs, а клиенты, использующие myexec.h, не имеют библиотеки для ссылки:
prefix=/usr/local
libdir=${prefix}/lib/x86_64-linux-gnu
includedir=${prefix}/include
Name: myexec
Description: buttond: myexec
Version: 1.0
Libs: -L${libdir} -lmyexec # here is my issue!
Cflags: -I${includedir}
Связывание исполняемого файла клиента, который выполняет вызовы из myexec.h
/usr/bin/ld: cannot find -lmyexec
Является ли это правильным способом создания такого пакета?
Мне не хватает опции в модуле pkgconfig для принудительной генерации правильного .pc?
Спасибо!
Ответ №1:
Не уверен, что вы подразумеваете под модулем pkgconfig, для которого требуется библиотека для ссылки. Но в случае пакета только для заголовка не требуется library(). Это должно сработать:
pkgconfig = import('pkgconfig')
pkgconfig.generate(
name : 'myexec',
version : '1.0',
subdirs : ['.', 'myexec'])
(здесь я предполагаю, что заголовки будут установлены в $ {PREFIX}/include/myexec dir)
Похоже также, что вам не хватает распространения зависимостей myexec в сгенерированный файл .pc — но это другой вопрос.
Комментарии:
1. Это работает хорошо, первый аргумент для pkgconfig.generate() является необязательным. Но мне не хватало аргумента «name».
2. Кроме того, не могли бы вы подробнее рассказать о распространении зависимостей. Это действительно то, что я упустил из виду.
3. @adrien Я имею в виду, если ваша библиотека заголовков также зависит от какой-либо другой библиотеки — просто проверьте, распространяются ли они на Requireds: field или Clfags: (дополнительные включаемые каталоги), добавленные в результате declare_dependency (…)