Как я могу указать meson, в каких каталогах искать зависимости?

Я еду из CMake в meson. Мне нравится работать в изолированных средах, используя conda. Таким образом, я могу контролировать, какие пакеты установлены для каждого проекта.

Теперь в cmake я бы передал -DCMAKE_FIND_ROOT_PATH=$CONDA_PREFIX, чтобы запустить процесс поиска в другом каталоге (в моем случае - conda env)

Итак, мой вопрос: как мне добиться такого же эффекта на meson?

Это мой маленький meson.build для справки:

project('foo', 'cpp')

cpp = meson.get_compiler('cpp')
spdlog = cpp.find_library('spdlog')

executable('foo',
  'src/fact.cpp',
  dependencies : [spdlog])

person Avi Shukron    schedule 24.03.2020    source источник


Ответы (2)


meson достаточно умен, чтобы найти пакеты внутри conda env, предполагая, что у вас установлены pkg-config или cmake в указанной среде.

Кроме того, правильный способ добавить внешнюю зависимость - использовать dependency('spdlog'), а не find_library.

Итак, фиксированный meson.build должен выглядеть так:

project('foo', 'cpp')

spdlog = dependency('spdlog')

executable('foo',
  'src/fact.cpp',
  dependencies : [spdlog])
person Avi Shukron    schedule 24.03.2020
comment
Следует отметить, что это не будет работать для каждого пакета conda, потому что некоторые пакеты не предоставляют файл .pc. - person tmms; 04.06.2020

мезон получает параметр

--pkg-config-path path

который добавит path к пути поиска pkg-config.

Добавление

spdlog = dependency('spdlog')

Найдет spdlog, если файл .pc находится в path

person kpeace    schedule 26.04.2020