Nie jestem w stanie zbudować modułu opakowania Pythona dla mojej biblioteki C za pomocą CMake i Swig dla Python3. Wszystko działa poprawnie dla Python2.x, ale wygląda na to, że CMake nie może znaleźć Python3. Rozejrzałem się już i spróbowałem kilku rzeczy.Czy CMake obsługuje Python3?
Na przykład mój plik wykonywalny python
łączy się z Python3, ponieważ odczytam CMake znajdzie tę wersję jako pierwszą.
Proszę zobaczyć tutaj część łyk z 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})
Niestety, wyjście po wywołaniu cmake pokazuje, że tylko python2.7 znaleziono:
-- 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
Chciałem zasugerować zrobić własną wersję modułu znajdź dla Pythona, który obsługuje python3 i umieścić, że w tym samym folder jako CMakelists.txt jednak wydaje się, że cmake-2.8.11.X ma bezpośrednie wsparcie dla python3. Czy masz starą wersję cmake? – drescherjm
Używam cmake w wersji 2.8.5. Więc to może być problem, zaglądnę w to, dzięki! – mijc