【问题标题】:is there any way to use conan package in meson?有没有办法在介子中使用柯南包?
【发布时间】:2020-04-25 00:26:09
【问题描述】:

我们可以在柯南中使用介子构建系统。但是我找不到任何关于如何在 meson.build 中添加柯南包作为依赖项的文档。在cmake中非常简单,我们可以简单地使用conan_cmake_run。我怎样才能在介子中做类似的事情?

【问题讨论】:

  • 这个问题你解决了吗?
  • 没有。似乎没有办法,唯一的办法就是在源代码中创建一个柯南项目,让柯南来处理构建过程

标签: conan meson-build


【解决方案1】:

由于介子还没有支持柯南,我们需要自己架桥。好在很简单,举个例子:


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
)

参考:This gist

【讨论】:

  • 这实际上至少在 1.25 中不起作用。 conan install ref@ -if somepath 无法按预期工作。如果软件包已经安装到标准位置.conan/data/,它将不会在该路径中安装任何东西
  • 此外,除非包定义了 deploy() 方法,否则-if 根本不起作用。
  • 为了将依赖的所有内容从 conan/data 复制到 meson 文件夹进行打包,我必须指定'-g deploy'
  • @Wang 也许你的包需要deploy 生成器才能工作。对于我的 C/C++ 项目,cmake_find_package 已经足够好了,它会生成事实上的 FindXXX.cmake 配方,它指向 .conan/data/ 缓存并设置适当的标志。
【解决方案2】:

这就是我所做的:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-01
    • 2021-12-09
    • 2014-12-30
    相关资源
    最近更新 更多