使用Boost Python有条件地添加模块

时间:2018-05-11 13:39:34

标签: c++ boost namespaces boost-python

我成功使用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模块,以便我可以在单独的文件中添加部件。

1 个答案:

答案 0 :(得分:0)

现在我在导出函数中添加了一些ifdefs,根据CMake中创建的定义限制导出。

虽然我更喜欢保持代码清洁,但它现在还不错,但是现在它是我唯一的解决方案。