使用CMake为Python中的C++扩展创建SWIG,并依赖已有库
我想用SWIG的帮助文件来运行以下代码:
# This is a CMake example for Python
FIND_PACKAGE(SWIG REQUIRED)
INCLUDE(${SWIG_USE_FILE})
FIND_PACKAGE(PythonLibs)
INCLUDE_DIRECTORIES(${PYTHON_INCLUDE_PATH})
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR})
SET(CMAKE_SWIG_FLAGS "")
SET_SOURCE_FILES_PROPERTIES(example.i PROPERTIES CPLUSPLUS ON)
SET_SOURCE_FILES_PROPERTIES(example.i PROPERTIES SWIG_FLAGS "-includeall")
SWIG_ADD_MODULE(example python example.i example.cxx) # I need to link to an external library
SWIG_LINK_LIBRARIES(example ${PYTHON_LIBRARIES})
这个代码本来可以正常运行,但在我的情况下,example.cxx需要链接一个已经存在的库,我们暂且叫它libmylibrary.a。我试着把这个库加到SWIG_LINK_LIBRARIES命令里,但这样并没有解决问题。有没有什么好的建议?
1 个回答
4
其实你只需要把上面最后一行改成这样
SWIG_LINK_LIBRARIES(example mylibrary ${PYTHON_LIBRARIES})
这里的mylibrary指的是libmylibrary.a这个文件。