使用CMake为Python中的C++扩展创建SWIG,并依赖已有库

1 投票
1 回答
2698 浏览
提问于 2025-04-18 11:49

我想用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这个文件。

撰写回答