meson-build - 将静态库链接到共享库或二进制文件

标签 meson-build

我有一个来自项目 A (我们称之为 liba.so )的静态库,我想在我的项目 B (我们称之为 libb.so )中编译一个共享库并将 liba.so 嵌入其中。

另外,我在那个项目 B 中有一个二进制文件,它也取决于 liba.so ,所以我想将它嵌入到二进制文件中。

那可能吗?如何?

最佳答案

当 A 是单独的代码库时

您所做的是构建和安装项目 A。然后在项目 B 的定义中创建对项目 A 的依赖。

看起来像这样:

a_dep = dependency('a', version : '>=1.2.8')    
lib_b = shared_library('proj_b', sources: 'prog_b.c', dependencies : a_dep)
dependency 中的 version 部分是可选的。

当 A 与 B 处于同一个介子项目时

当 A 和 B 在同一个介子项目中时,它有点丑陋。你必须在 A 中声明一个依赖 anchor 。

看起来像这样:
incdirs = include_directories('include')
lib_a = static_library('a', 'proj_a.c', include_directories : indirs)

liba_dependency = declare_dependency(
   include_directories : incdirs,
   link_with : lib_a,
   sources : ['proj_a.c'])

然后项目B变成:
lib_b = shared_library('proj_b', sources: 'prog_b.c', dependencies : lib_a)

关于meson-build - 将静态库链接到共享库或二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34663124/

相关文章:

c++ - 介子创建不会编译的构建文件

versioning - 介子项目版本可以动态分配吗?

build - 如何在构建时在介子中运行自定义命令?

gstreamer - 如何在介子构建中为 dirs 选项提供相对路径以查找第三方库?

python - meson 找到 python3 二进制文件,但找不到 python3 依赖项

c - 如果在带有 tmpfs 的容器中运行,为什么 meson 不能确定 time_t 的大小?

shell - 如何从 Meson 脚本运行 shell 命令?

gtk - 需要帮助将 Make 文件转换为 Vala 的 Meson 构建文件

build - 在介子中,您可以测试项目中是否存在目录吗?

c++ - 如何在介子构建中指定依赖版本?