2013-07-17 4 views
6

CMakeとSwig for Python3を使って私のCライブラリ用のPythonラッパーモジュールをビルドすることができません。 Python2.xではすべてうまく動作しますが、CMakeがPython3を見つけることができないようです。私はすでに周りを見回し、いくつかのことを試しました。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 
+0

を参照してください、私はあなたがのpython3をサポートPython用のファインダモジュールの独自のバージョンを作ることを示唆しようと同じであることを入れました。フォルダをCMakelists.txtとして表示しますが、cmake-2.8.11.Xはpython3を直接サポートしているようです。あなたは古いバージョンのcmakeを持っていますか? – drescherjm

+0

私はcmakeバージョン2.8.5を使用しています。だから、これは問題かもしれない、私はそれを調べる、ありがとう! – mijc

答えて

1

私は種類の問題を解決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) 
6

は、あなたのビルドディレクトリがクリーンであることを確認することはできますか?私はまったく同じ問題を抱えていました。

+2

これは私にとっても問題を解決しました。ありがとう。 –

+0

完璧に作業しました! –

0

これは既知のバグですが、残念ながらそれは現時点では解決されていない、http://www.cmake.org/Bug/print_bug_page.php?bug_id=13794

+0

それは本当です。しかし、私が下で言ったように、あなたは何とか手動でpythonのバージョンを設定することによって問題を解決することができます。 Python 3は公式にcmakeによってサポートされていませんが、これまでのところ動作します。 – mijc

+0

IIUCでバグが解決されました。 –

関連する問題