无法用 CMake 制作树枝包装纸

Couldn't make swig wrapper with CMake

本文关键字:包装纸 CMake      更新时间:2023-10-16

嗨,我所有试图用cmake构建python swig包装器。我在制作过程中有以下问题:

/usr/local/lib/libpython2.7.a(abstract.o): relocation R_X86_64_32S against `_Py_NotImplementedStruct' can not be used when making a shared object; recompile with -fPIC

这是我的cmakelists.txt:

cmake_minimum_required(VERSION 2.8)
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 "-Wall" "-c++")
SET_SOURCE_FILES_PROPERTIES(feature.i PROPERTIES CPLUSPLUS ON)
SET_SOURCE_FILES_PROPERTIES(feature.i PROPERTIES SWIG_FLAGS "-includeall")
SWIG_ADD_MODULE(feature_wrapper python feature.i)
SWIG_LINK_LIBRARIES(feature_wrapper ${PYTHON_LIBRARIES})

在您的CMakeLists.txt文件中,添加以下行:

SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

并将以下行替换为:

SWIG_ADD_MODULE(feature python feature.i feature.cxx)
SWIG_LINK_LIBRARIES(feature ${PYTHON_LIBRARIES})

然后,您可以通过执行

进行检查
python
>>> import feature
>>> print dir(feature)