mij*_*ijc 12 python swig cmake python-3.x
我无法通过CMake和Swig for Python3为我的C库构建Python包装器模块.一切都适用于Python2.x但看起来CMake找不到Python3.我已经环顾四周,尝试了几件事.
例如,我的python可执行文件链接到Python3,因为我读过CMake会先找到这个版本.
请看这里的SWIG部分CMakeLists.txt:
FIND_PACKAGE(SWIG REQUIRED)
INCLUDE(${SWIG_USE_FILE})
FIND_PACKAGE(PythonInterp 3)
FIND_PACKAGE(PythonLibs 3)
FIND_PATH(PYTHON_INCLUDE_PATH Python.h
/usr/include
/usr/local/include)
INCLUDE_DIRECTORIES(${PYTHON_INCLUDE_DIRS})
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR})
SET(CMAKE_SWIG_FLAGS "")
SET_SOURCE_FILES_PROPERTIES(kissCT3.i PROPERTIES CPLUSPLUS ON)
#SET_SOURCE_FILES_PROPERTIES(kissCT3.i PROPERTIES SWIG_FLAGS "-includeall -py3")
SWIG_ADD_MODULE(kissCT3 python kissCT3.i)
SWIG_LINK_LIBRARIES(kissCT3 libct2d matio kissfft ${PYTHON_LIBRARIES})
Run Code Online (Sandbox Code Playgroud)
不幸的是,调用cmake后的输出显示只找到python2.7:
-- Found SWIG: /usr/bin/swig2.0 (found version "2.0.4")
-- Found PythonInterp: /usr/bin/python2.7 (Required is at least version "3")
-- Found PythonLibs: /usr/lib/libpython2.7.so (Required is at least version "3")
-- Configuring done
-- Generating done
Run Code Online (Sandbox Code Playgroud)
CMake 3.12 应该可以帮助您解决问题。引用发行说明:
添加了新的“FindPython3”和“FindPython2”模块以及新的“FindPython”模块,以提供一种定位python环境的新方法。
我通过手动设置 python 版本解决了这个问题。这并不是真正值得推荐的,但它现在可以使用(请注意,您必须使用您想要使用的 python 版本的自己的安装路径):
SET(PYTHON_INCLUDE_PATH /usr/include/python3.2mu)
SET(PYTHON_LIBRARIES /usr/lib/libpython3.2mu.so)
SET(PYTHON_EXECUTABLE /usr/bin/python3.2mu)
SET(PYTHON_INCLUDE_DIR /usr/include/python3.2mu)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7153 次 |
| 最近记录: |