Просмотр исходного кода

FindPythonInterp: try harder to get a version number

Rolf Eike Beer 14 лет назад
Родитель
Сommit
bde7b5aafd
1 измененных файлов с 15 добавлено и 2 удалено
  1. 15 2
      Modules/FindPythonInterp.cmake

+ 15 - 2
Modules/FindPythonInterp.cmake

@@ -88,8 +88,19 @@ endif()
 
 # determine python version string
 if(PYTHON_EXECUTABLE)
-    execute_process(COMMAND "${PYTHON_EXECUTABLE}" --version ERROR_VARIABLE _VERSION OUTPUT_QUIET ERROR_STRIP_TRAILING_WHITESPACE)
-    if(_VERSION MATCHES "^Python [0-9]+\\.[0-9]+.*")
+    execute_process(COMMAND "${PYTHON_EXECUTABLE}" --version
+                    ERROR_VARIABLE _VERSION
+                    RESULT_VARIABLE _PYTHON_VERSION_RESULT
+                    OUTPUT_QUIET
+                    ERROR_STRIP_TRAILING_WHITESPACE)
+    if(_PYTHON_VERSION_RESULT)
+        execute_process(COMMAND "${PYTHON_EXECUTABLE}" -V
+                        ERROR_VARIABLE _VERSION
+                        RESULT_VARIABLE _PYTHON_VERSION_RESULT
+                        OUTPUT_QUIET
+                        ERROR_STRIP_TRAILING_WHITESPACE)
+    endif(_PYTHON_VERSION_RESULT)
+    if(NOT _PYTHON_VERSION_RESULT AND _VERSION MATCHES "^Python [0-9]+\\.[0-9]+.*")
         string(REPLACE "Python " "" PYTHON_VERSION_STRING "${_VERSION}")
         string(REGEX REPLACE "^([0-9]+)\\.[0-9]+.*" "\\1" PYTHON_VERSION_MAJOR "${PYTHON_VERSION_STRING}")
         string(REGEX REPLACE "^[0-9]+\\.([0-9])+.*" "\\1" PYTHON_VERSION_MINOR "${PYTHON_VERSION_STRING}")
@@ -97,6 +108,8 @@ if(PYTHON_EXECUTABLE)
             string(REGEX REPLACE "^[0-9]+\\.[0-9]+\\.([0-9]+).*" "\\1" PYTHON_VERSION_PATCH "${PYTHON_VERSION_STRING}")
         endif()
     endif()
+    unset(_PYTHON_VERSION_RESULT)
+    unset(_VERSION)
 endif(PYTHON_EXECUTABLE)
 
 # handle the QUIETLY and REQUIRED arguments and set PYTHONINTERP_FOUND to TRUE if