Does CMake support Python3?
Solution 1
Can you make sure your build directory is clean? I had the exact same issue and after cleaning the dir it worked.
Solution 2
CMake 3.12 should help you with your issue. Citing the release notes:
New “FindPython3” and “FindPython2” modules, as well as a new “FindPython” module, have been added to provide a new way to locate python environments.
mijc
Updated on June 09, 2022Comments
-
mijc almost 2 years
I am not able to build a Python wrapper module for my C library via CMake and Swig for Python3. Everything works fine for Python2.x but it looks like CMake cannot find Python3. I already looked around and tried a couple of things.
For example, my
python
executable links to Python3, as I read CMake will find this version first.Please see here the SWIG part of the
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})
Unfortunately, the output after calling cmake shows that only python2.7 is found:
-- 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
-
Dimitar Asenov over 8 yearsThis fixed the problem for me, too. Thanks.
-
Jon Deaton over 6 yearsWorked perfectly!