Browse Source

FindPythonInterp: Add `-32` and `-64` registry entry variants

As of 3.6.1 Python (only version tested in this case), installing 32-bit
version on 64-bit windows has a slightly different registry key path.
`-32` is appended to the end of the version number in the path.  Also
added a few more registry path guesses based on 64-bit version of
Python.

Also the module now checks if the host is WIN32 instead of the target,
which is required if you are cross compiling.
Robert Dailey 8 years ago
parent
commit
9d15d3c748
1 changed files with 5 additions and 2 deletions
  1. 5 2
      Modules/FindPythonInterp.cmake

+ 5 - 2
Modules/FindPythonInterp.cmake

@@ -91,12 +91,15 @@ unset(_PYTHON3_VERSIONS)
 if(NOT PYTHON_EXECUTABLE)
     foreach(_CURRENT_VERSION IN LISTS _Python_VERSIONS)
       set(_Python_NAMES python${_CURRENT_VERSION})
-      if(WIN32)
+      if(CMAKE_HOST_WIN32)
         list(APPEND _Python_NAMES python)
       endif()
       find_program(PYTHON_EXECUTABLE
         NAMES ${_Python_NAMES}
-        PATHS [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}\\InstallPath]
+        PATHS
+            [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}\\InstallPath]
+            [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}-32\\InstallPath]
+            [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}-64\\InstallPath]
         )
     endforeach()
 endif()