diff --git a/cmake_support/FindPython.cmake b/cmake_support/FindPython.cmake index 66c62f51cd8fcf5fc26af7f5e3f60dbed35a1713..29c5a5ddef0637641815b4171350be003627713c 100644 --- a/cmake_support/FindPython.cmake +++ b/cmake_support/FindPython.cmake @@ -70,22 +70,44 @@ endmacro() macro(_find_python_bin PYTHON_ROOT VERSION) string(REPLACE "." "" _VERSION_NO_DOTS ${VERSION}) - if(PYTHON_ROOT) - find_program(PYTHON_BINARY - NAMES "python" "python${_VERSION_NO_DOTS}" "python${VERSION}" - HINTS "${PYTHON_ROOT}" - PATH_SUFFIXES bin - NO_SYSTEM_ENVIRONMENT_PATH NO_DEFAULT_PATH - ) - else() - find_program(PYTHON_BINARY - NAMES "python" "python${_VERSION_NO_DOTS}" "python${VERSION}" - HINTS "${CMAKE_PREFIX_PATH}" - PATH_SUFFIXES bin - ) - endif() + foreach(_NAME "python" "python${_VERSION_NO_DOTS}" "python${VERSION}") + if(PYTHON_ROOT) + find_program(PYTHON_BINARY + NAMES ${_NAME} + HINTS "${PYTHON_ROOT}" + PATH_SUFFIXES bin + NO_SYSTEM_ENVIRONMENT_PATH NO_DEFAULT_PATH) + if(PYTHON_BINARY) + execute_process(COMMAND ${PYTHON_BINARY} -V + OUTPUT_VARIABLE PY_VERSION + ERROR_VARIABLE PY_VERSION) + if(PY_VERSION MATCHES ${VERSION}) + break() + else() + unset(PYTHON_BINARY CACHE) + endif() + endif() + else() + find_program(PYTHON_BINARY + NAMES $_NAME + HINTS "${CMAKE_PREFIX_PATH}" + PATH_SUFFIXES bin) + if(PYTHON_BINARY) + execute_process(COMMAND ${PYTHON_BINARY} -V + OUTPUT_VARIABLE PY_VERSION + ERROR_VARIABLE PY_VERSION) + if(${PY_VERSION} matches ${VERSION}) + break() + else() + unset(PYTHON_BINARY CACHE) + endif() + endif() + endif() + endforeach() endmacro() + + #------------------------------------------------------------------------------- # check for python lib # @@ -114,7 +136,7 @@ macro(check_for_python_binary) foreach(_VERSION ${PYTHON_VERSIONS}) if(${PYTHON_MIN_VERSION} VERSION_LESS ${_VERSION}) _find_python_bin("${PYTHON_ROOT}" "${_VERSION}") - if(PYTHON_LIBRARIES) + if(PYTHON_BINARY) set(PYTHON_VERSION "${_VERSION}") break() endif()