2013-07-17 7 views
6

Ich bin nicht in der Lage, einen Python-Wrapper-Modul für meine C-Bibliothek über CMake und Swig für Python3 zu bauen. Alles funktioniert gut für Python2.x, aber es sieht so aus, als ob CMake Python3 nicht finden kann. Ich habe mich schon umgesehen und ein paar Sachen ausprobiert.Unterstützt CMake Python3?

Zum Beispiel, meine python ausführbare Links zu Python3, wie ich lesen CMake wird diese Version zuerst finden.

Sehen Sie hier die SWIG Teil des 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}) 

Leider nachdem der Ausgang Cmake Aufruf zeigt, dass nur python2.7 gefunden:

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

Ich wollte vorschlagen, dass Sie Ihre eigene Version des Finders Modul für Python machen, die python3 und umsetzen, die in den gleichen unterstützt Ordner als Ihre CMakelists.txt aber es scheint, dass cmake-2.8.11.X direkte Unterstützung für python3 hat. Hast du eine alte Version von cmake? – drescherjm

+0

Ich benutze cmake Version 2.8.5. Also, das könnte das Problem sein, ich werde mich darum kümmern, danke! – mijc

Antwort

1

Ich löste Art des Problems indem Sie die Python-Version manuell festlegen. Das ist nicht wirklich zu empfehlen, aber es funktioniert jetzt (beachten Sie, dass Sie Ihre eigenen Installationspfad der Python-Version verwenden, müssen Sie verwenden möchten):

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

Können Sie Ihre Build-Verzeichnis stellen Sie sicher, sauber? Ich hatte genau das gleiche Problem und nach dem Reinigen der Dir funktionierte es.

+2

Das behebt das Problem auch für mich. Vielen Dank. –

+0

Arbeitete perfekt! –

0

Dies ist ein bekannter Fehler, aber leider ist es nicht in diesem Moment gelöst, siehe http://www.cmake.org/Bug/print_bug_page.php?bug_id=13794

+0

Das stimmt. Aber wie ich unten gesagt habe, können Sie das Problem irgendwie lösen, indem Sie die Python-Version manuell einstellen. Python 3 wird von CMake nicht offiziell unterstützt, aber es funktioniert soweit. – mijc

+0

IIUC, dass der Fehler behoben wurde. –