【问题标题】:Conditionally add modules with Boost Python使用 Boost Python 有条件地添加模块
【发布时间】:2018-05-11 13:39:34
【问题描述】:

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

【问题讨论】:

    标签: c++ boost namespaces boost-python


    【解决方案1】:

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

    虽然我更愿意保持代码干净,但这还不错,但目前这是我唯一的解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-30
      • 2011-02-13
      • 1970-01-01
      • 1970-01-01
      • 2010-11-10
      • 2012-08-15
      • 1970-01-01
      相关资源
      最近更新 更多