有条件地使用 Boost Python 添加模块
Conditionally add modules with 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++中从两个单独的for循环中添加两个数组
- 如何运行位于boost/libs/python/example/tutorial目录中的hello.cpp和Jamfil
- Pybind11:将元组列表从Python传递到C++
- 如何将 Python.h 库添加到 eclipse 以用于C++程序?
- 有条件地使用 Boost Python 添加模块
- 添加 swig pythoncode 以在 Python 对象上设置自己的标志
- C - 将数字添加到列表中?(就像python)
- 选择性地将功能定义添加到Python名称空间
- Python 子进程.Popen 在 g++ 中编译,自动添加.cpp文件
- boost.python向现有的PyObject添加绑定(对于例外处理)
- 将构造函数添加到boost.python子类导致参数不匹配错误
- libclang:添加编译器系统包含路径(Windows中的Python)
- 如何在SWIG包装C++代码中向目标语言(特别是Python)添加替代构造函数
- Boost.Python:来自 python 中C++对象:无法添加到基类列表中C++
- 使用python解析或读取CPP文件,并通过忽略CPP文件注释来添加数据
- 如何通过使用swig (Python)添加新属性来扩展c++类
- 在c++程序中添加python函数
- 从输入中添加连续整数(从 Python 转换为 C++)
- Boost::带有函数模板的Python类:如何从外部添加实例