使用 CMake 时如何包装多个 Swig 模块
How to wrap multiple Swig modules when using CMake
我正在使用 C++ 和 Swig 构建一个库,使用 cmake 生成我的构建 files.The 库是一组 class,其中每个 class 我有,
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 class。这工作正常并且功能完美,但是在我的 python 脚本中使用它有点麻烦。例如,如果我想创建一个 class n 的对象,我会
class_object = Classn.Classn();
我更喜欢的是
class_object = my_library.Classn();
这是如何实现的?
您创建一个单独的 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 文件
我正在使用 C++ 和 Swig 构建一个库,使用 cmake 生成我的构建 files.The 库是一组 class,其中每个 class 我有,
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 class。这工作正常并且功能完美,但是在我的 python 脚本中使用它有点麻烦。例如,如果我想创建一个 class n 的对象,我会
class_object = Classn.Classn();
我更喜欢的是
class_object = my_library.Classn();
这是如何实现的?
您创建一个单独的 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 文件