首页 > 解决方案 > 在 pkg-config 和 cmake 找不到介子中声明库依赖项

问题描述

这个问题与介子构建系统有关,特别是如何添加 pkg-config 和/或 cmake 找不到的外部依赖项(库)。这应该很简单,但似乎我遗漏了一些东西(很明显?!)。

假设我在自定义路径的某处有一个静态库,/home/user/libraries/foo/lib/libfoo.a并带有相应的包含目录/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尽管这意味着指定可能的硬链接手动维护,这不是首选方式)还是有更好的方法来做到这一点?

标签: c++meson-build

解决方案


您在编译器对象上使用find_library()and方法: https ://mesonbuild.com/Reference-manual.html#compiler-objecthas_header()

然后将其传递给您正在编译的任何内容。

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
)

推荐阅读