c++ - 在 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
尽管这意味着指定可能的硬链接手动维护,这不是首选方式)还是有更好的方法来做到这一点?
解决方案
您在编译器对象上使用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
)
推荐阅读
- linux - 如何在 Amazon Linux AMI 上安装 postgres10 工具
- c# - 在当前用户的上下文中使用服务的管理员权限运行 ui 应用程序
- r - 打印没有列名但保持对齐的矩阵?
- python - pymongo.errors.CursorNotFound:在服务器上找不到游标 id '...'
- linux - Ant 构建在 Linux 机器上失败
- azure-eventgrid - Azure 函数未向事件网格报告失败
- android-things - Rainbow HAT 上的 SPI 引脚真的有效吗?
- docker - How to link frontend and backend docker containers
- django - Django - postgres: how can I verify whether the database connection is SSL?
- firebase - Error:Failed to resolve: common in android studio