我成功地使用 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 模块,以便我可以在单独的文件中向其中添加部件。
最佳答案
现在我已经添加了一些 ifdefs
在基于在 CMake 中创建的定义限制导出的导出函数内部。
虽然我更希望保持代码干净,但这还不错,但现在这是我唯一的解决方案。
关于c++ - 使用 Boost Python 有条件地添加模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50293651/