【问题标题】:Does CMake support Python3?CMake 是否支持 Python3?
【发布时间】:2013-07-15 17:02:25
【问题描述】:

我无法通过 CMake 和 Swig for Python3 为我的 C 库构建 Python 包装器模块。 Python2.x 一切正常,但看起来 CMake 找不到 Python3。我已经环顾四周并尝试了几件事。

例如,我的python 可执行文件链接到Python3,因为我阅读CMake 会首先找到这个版本。

请在此处查看CMakeLists.txt 的 SWIG 部分:

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})

可惜调用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

【问题讨论】:

  • 我将建议您为支持 python3 的 python 制作自己的 finder 模块版本,并将其放在与您的 CMakelists.txt 相同的文件夹中,但它似乎是 cmake-2.8.11。 X 直接支持 python3。你有一些旧版本的 cmake 吗?
  • 我使用的是 cmake 版本 2.8.5。所以,这可能是问题,我会调查一下,谢谢!

标签: python python-3.x cmake swig


【解决方案1】:

你能确保你的构建目录是干净的吗?我遇到了完全相同的问题,并且在清理目录后它起作用了。

【讨论】:

  • 这也解决了我的问题。谢谢。
  • 完美运行!
【解决方案2】:

CMake 3.12 应该可以帮助您解决问题。引用发行说明:

新的“FindPython3”和“FindPython2”模块,以及一个新的 “FindPython”模块,已添加以提供一种新的定位方式 python环境。

【讨论】:

    【解决方案3】:

    我通过手动设置 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)
    

    【讨论】:

      猜你喜欢
      • 2017-12-23
      • 1970-01-01
      • 1970-01-01
      • 2014-06-11
      • 2017-08-30
      • 2012-07-25
      • 1970-01-01
      • 1970-01-01
      • 2015-03-30
      相关资源
      最近更新 更多