есть ли способ использовать пакет conan в мезоне?

Мы можем использовать систему сборки мезонов в conan. Но я не могу найти ни одного документа о том, как добавить пакет conan в качестве зависимости в meson.build. В cmake это очень просто, мы можем просто использовать conan_cmake_run. Как я могу сделать то же самое в мезоне?


person Wang    schedule 25.04.2020    source источник
comment
Вы решили эту проблему?   -  person Elvis Oric    schedule 03.05.2020
comment
нет. кажется, что это невозможно, единственный способ сделать это - создать проект conan внутри источника и позволить conan обрабатывать процесс сборки   -  person Wang    schedule 16.05.2020


Ответы (2)


Поскольку мезон еще не поддержал Конана, нам нужно самостоятельно их преодолеть. К счастью, это простой пример:


conan_pkgs= {
    'fmt':'fmt/5.3.0@',  # <- Must contain @, otherwise Conan will think it is a path
    # you can add more ...
}
deps=[]
foreach pkg_name, conan_ref : conan_pkgs
    module_path = meson.current_build_dir() / 'conan-cmake' / pkg_name
    run_command('conan','install',conan_ref, '-if',module_path,
        '-g','cmake_find_package', check: true)
    deps += dependency(pkg_name, method: 'cmake', cmake_module_path: module_path)
endforeach

executable('exe_need_deps',  ['main.cpp'],
    dependencies: deps
)

Ссылка: Суть

person hydev    schedule 09.05.2020
comment
это на самом деле не работает, по крайней мере, в 1.25. conan install ref@ -if somepath работает не так, как вы ожидали. Он не установит ничего по этому пути, если пакет уже установлен в стандартное место .conan/data/ - person Wang; 16.05.2020
comment
Более того, если в пакете не определен метод deploy (), -if вообще не действует. - person Wang; 16.05.2020
comment
чтобы скопировать все, от чего зависело, из conan / data в папку meson для упаковки, я должен указать '-g deploy' - person Wang; 16.05.2020
comment
@Wang Может быть, вашим пакетам для работы нужен генератор deploy. Для моих проектов C / C ++ cmake_find_package достаточно хорош, он генерирует де-факто рецепт FindXXX.cmake, который указывает на .conan/data/ кеш и устанавливает соответствующие флаги. - person hydev; 28.05.2020

Вот что я сделал:

run_command('conan', 'install', '--install-folder', meson.build_root(), meson.source_root(), check: true)
person kpeace    schedule 26.04.2020