我的google-fu失败了,所以我在这里问。
出于一个疯狂的原因,我想将库中的特定对象链接到我的目标。
例如,我希望将foo.o链接到bar.a中的foobar.so。
CMake中是否有一些语法使这成为可能?
编辑:好的,更多的是我的问题。
我们正在制作一个模块化的信号处理系统,具有不同的“层次”实现:
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特定的入口点,这个入口点只适用于已实现的模型。
发布于 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)。
https://stackoverflow.com/questions/60554418
复制相似问题