我有一个来自项目的静态库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)
Run Code Online (Sandbox Code Playgroud)
中的版本部分dependency是可选的。
当A与B在同一个介子计划中时
当A和B在同一个介子项目中时,就有点难看了。您必须在 A 中声明一个依赖锚点。
看起来像这样:
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'])
Run Code Online (Sandbox Code Playgroud)
那么项目B就变成:
lib_b = shared_library('proj_b', sources: 'prog_b.c', dependencies : lib_a)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12739 次 |
| 最近记录: |