如何在使用CMake时包装多个Swig模块

时间:2016-04-18 18:43:10

标签: python c++ swig

我正在使用C ++和Swig构建一个库,使用cmake生成我的构建文件。该库是一组类,对于我所拥有的每个类,

class1.cpp, class1.h, class1.i
class2.cpp, class2.h, class2.i
etc for each classn,

在我的CMakeLists.txt中,我有以下几行,

SET_SOURCE_FILES_PROPERTIES(classn.i PROPERTIES CPLUSPLUS ON)
SET_SOURCE_FILES_PROPERTIES(classn.i PROPERTIES SWIG_FLAGS "-includeall")
SWIG_ADD_MODULE(Classn python classn.i classn.cpp)
SWIG_LINK_LIBRARIES(Classn ${PYTHON_LIBRARIES})

每个n级。这工作正常,功能完善,但在我的python脚本中使用它有点痛苦。如果我想创建一个类n的对象,例如我会有

class_object = Classn.Classn();

我更喜欢的是

class_object = my_library.Classn();

如何实现这一目标?

1 个答案:

答案 0 :(得分:2)

您可以在其中创建单独的my_library.i文件和%include所需的类。见File inclusion

%module my_library

%include class1.i
%include class2.i

然后添加类似

的内容
SWIG_ADD_MODULE(my_library python my_library.i )
SWIG_LINK_LIBRARIES(my_library ${PYTHON_LIBRARIES})

到适当的cmake文件

相关问题