объявить зависимости библиотеки в мезонах, не найденные с помощью pkg-config и cmake - PullRequest
0 голосов
/ 26 апреля 2020

Этот вопрос относится к системе сборки мезонов, в частности, как добавить внешнюю зависимость (библиотеку), которая не найдена в pkg-config и / или cmake. Это должно быть просто, но, похоже, я что-то упускаю (очевидно?!).

Скажем, у меня есть библиотека stati c где-то в произвольном пути /home/user/libraries/foo/lib/libfoo.a с соответствующим каталогом include /home/user/libraries/foo/include/. Так как эта библиотека не найдена в pkg-config и / или cmake, выполнение чего-то вроде

foo_dep = dependency('foo')
exe = executable('bar','bar.cpp', link_with: foo_dep)

не будет работать. Поэтому мне интересно, каков способ работы мезон , то есть я должен использовать declare_dependency() (хотя я думал, что это больше для подпроектов), я должен передать флаги компилятора и компоновщика с -I и -L -l et c. (хотя это будет означать указание жестких ссылок, которые могут поддерживаться вручную, что не может быть предпочтительным способом) или есть лучший способ сделать это?

1 Ответ

1 голос
/ 26 апреля 2020

Вы используете методы find_library() и has_header() для объекта компилятора: https://mesonbuild.com/Reference-manual.html#compiler -объект

Затем передайте это любому, что вы компилируете.

cxx = meson.get_compiler('cpp')
libfoo = cxx.find_library('foo')
executable('foo', 'foo.cpp',
  link_with: libfoo,
  include_directories: ..., # Using has_header() find this path
)
...