我有一个来自项目 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/