我成功使用Boost Python构建了一系列Python库。这些库是有条件构建的,具体取决于用户在构建时指定的设置(通过CMake)。
现在我想做的是将它们全部合并到一个库中,只有在需要时才包含一系列模块(每个旧库一个)。
所以,例如,如果我之前:
A.so # Always built
B.so # Compiled if B was set
C.so # Compiled if C was set
现在我想:
MyLib.so # Always built
---
import MyLib
MyLib.A # always works
MyLib.B # works only if MyLib was compiled with B set
MyLib.C # works only if MyLib was compiled with C set
我已经知道如何使用Boost Python创建名称空间(通过class_),但我不确定如何设置项目以便最终结果成为可能。
使用CMake我可以有条件地添加文件进行编译,但我不知道如何在C ++中定义MyLib模块,以便我可以在单独的文件中添加部件。
答案 0 :(得分:0)
现在我在导出函数中添加了一些ifdefs
,根据CMake中创建的定义限制导出。
虽然我更喜欢保持代码清洁,但它现在还不错,但是现在它是我唯一的解决方案。