首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CMake:将库中的特定.o链接到目标

CMake:将库中的特定.o链接到目标
EN

Stack Overflow用户
提问于 2020-03-05 21:45:52
回答 1查看 67关注 0票数 0

我的google-fu失败了,所以我在这里问。

出于一个疯狂的原因,我想将库中的特定对象链接到我的目标。

例如,我希望将foo.o链接到bar.a中的foobar.so

CMake中是否有一些语法使这成为可能?

编辑:好的,更多的是我的问题。

我们正在制作一个模块化的信号处理系统,具有不同的“层次”实现:

  • Python参考模型
  • C/C++浮点
  • C/C++定点
  • C/C++优化版本

F 212

为每个C/C++实现创建一个单独的.a文件。它们都支持一个定点接口和一个浮点接口,尽管它们只实现其中一个接口,并对另一个接口执行转换/蹦床操作。

换句话说,浮点实现具有算法的浮点实现和不动点入口点,它在调用基于浮点数的API之前将所有输入转换为浮点数。

DSP优化实现实现定点入口点,并提供一个浮动“蹦床”,以便在调用实际实现之前将其从浮点数转换为固定值。

所有这些都是为了让我们能够混合/匹配实现,这样我们就可以从理想的浮点模型开始,并零敲碎打地开发一个优化的DSP版本。在C/C++项目中,您只需链接所需的模块实现,它就可以正常工作了。

我们的初始模型是python,我们希望能够使用pybind11绑定从python调用C/C++代码。

pybind11共享对象的链接时间非常慢,并且会产生非常大的对象(即使使用建议的设置,我将得到3MB的dll),并且我们将有很多模块,所以我正在寻找一种方法,通过将固定条目和浮动条目组合在同一个.so中来减少.so的数量。通过这样的话:

module_pybind.so =module_fixed.a(Fied.o)+ module_float.a(float.o)

module_fixed.a(float.o)和module_float.a(Fied.o)不包括在内,因为它们只是蹦床函数。

我知道,这一切都有点古怪和复杂,我正在折磨的方式是远远超出常规,但我希望这可能会奏效。

如果不是,我可以使用蹦床玩更多的把戏,并且有一个pybind特定的入口点,这个入口点只适用于已实现的模型。

EN

回答 1

Stack Overflow用户

发布于 2020-03-06 03:14:57

.a文件是.o文件的存档。您可以使用ar x library.a命令解压缩存档,并使用add_custom_command + add_custom_target提供适当的依赖关系。那就只有add_library(... SHARED the_unpacked_object.o)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60554418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档