2013-07-17 13 views
6

Non riesco a creare un modulo wrapper Python per la mia libreria C tramite CMake e Swig per Python3. Tutto funziona bene per Python2.x ma sembra che CMake non riesca a trovare Python3. Mi sono già guardato intorno e ho provato un paio di cose.CMake supporta Python3?

Ad esempio, i miei collegamenti eseguibili python a Python3, come ho letto CMake troveranno prima questa versione.

prega di consultare qui la parte sorso di 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}) 

Purtroppo, l'uscita dopo aver chiamato CMake mostra che solo python2.7 si trova:

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

Stavo per suggerire che si fanno la propria versione del modulo finder per Python che supporta python3 e mettere che nello stesso cartella come CMakelists.txt tuttavia sembra che cmake-2.8.11.X abbia il supporto diretto per python3. Hai qualche vecchia versione di cmake? – drescherjm

+0

Sto usando cmake versione 2.8.5. Quindi, questo potrebbe essere il problema, lo esaminerò, grazie! – mijc

risposta

1

I tipi di risolto il problema impostando la versione python manualmente. Questo non è davvero raccomandabile ma funziona per ora (si noti che è necessario utilizzare il proprio percorso di installazione della versione di Python che si desidera utilizzare):

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

Potete assicurarsi che la cartella di compilazione è pulito? Ho avuto lo stesso identico problema e dopo aver pulito la cartella ha funzionato.

+2

Questo ha risolto il problema anche per me. Grazie. –

+0

ha funzionato perfettamente! –

0

Si tratta di un bug noto, ma purtroppo non è risolto in questo momento, vedo http://www.cmake.org/Bug/print_bug_page.php?bug_id=13794

+0

È vero. Ma come ho detto di seguito, puoi in qualche modo risolvere il problema impostando manualmente la versione di Python. Python 3 non è ufficialmente supportato da cmake, ma funziona fino ad ora. – mijc

+0

IIUC che il bug è stato risolto. –