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

标签 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 模块,以便我可以在单独的文件中向其中添加部件。

最佳答案

现在我已经添加了一些 ifdefs在基于在 CMake 中创建的定义限制导出的导出函数内部。

虽然我更希望保持代码干净,但这还不错,但现在这是我唯一的解决方案。

关于c++ - 使用 Boost Python 有条件地添加模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50293651/

相关文章:

c++ - 显示带有 GLTessellated 对象的列表? (OpenGL)

c++ - boost 日期时间解析字符串

c++ - 如何使用 Boost V2 1.70 日志库在第一个索引处保留最新的日志文件名(例如 logtrail01.txt)?

ruby-on-rails - rails 命名空间助手隔离

r - 从特定包加载函数

c++ - 嵌套的重载运算符?

c++ - 有效地复制/乘法树

c++ - time_t boost 日期转换给出不正确的结果

C++ 使用来自另一个标识符下的头文件的包含类

c++ - GetTimeZoneInformation 函数返回具有 "incorrect"值的结构