CMake: Look for Python using the "App Paths" key.

Query HKLM\Software\Microsoft\Windows\CurrentVersion\App Paths\Python.exe
and HKCU\Software\Microsoft\Windows\CurrentVersion\App Paths\Python.exe
first before trying other methods.

Change-Id: I83f54f6833149c68f1626c3c17f25ffe54d8ea5d
Reviewed-on: https://code.wireshark.org/review/11506
Petri-Dish: Gerald Combs <gerald@wireshark.org>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Gerald Combs <gerald@wireshark.org>
This commit is contained in:
Gerald Combs 2015-11-02 13:27:33 -08:00
parent 0f4d139437
commit 6d1b6cd39d
1 changed files with 26 additions and 13 deletions

View File

@ -2,17 +2,30 @@
# calling FindPythonInterp in order to keep us from using Cygwin's Python.
# http://public.kitware.com/Bug/view.php?id=13818
if(NOT PYTHON_EXECUTABLE AND WIN32)
foreach(_major_version 3 2)
foreach(_minor_version 7 6 5 4 3 2 1)
find_program(PYTHON_EXECUTABLE
python.exe
PATHS [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\${_major_version}.${_minor_version}\\InstallPath]
NO_DEFAULT_PATH
)
if (PYTHON_EXECUTABLE)
break()
endif()
if(WIN32)
# First check the HKLM and HKCU "App Paths" keys.
if(NOT PYTHON_EXECUTABLE)
get_filename_component(PYTHON_EXECUTABLE
"[HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows\\CurrentVersion\\App Paths\\Python.exe]"
)
endif()
if(NOT PYTHON_EXECUTABLE)
get_filename_component(PYTHON_EXECUTABLE
"[HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\App Paths\\Python.exe]"
)
endif()
if(NOT PYTHON_EXECUTABLE)
foreach(_major_version 3 2)
foreach(_minor_version 7 6 5 4 3 2 1)
find_program(PYTHON_EXECUTABLE
python.exe
PATHS [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\${_major_version}.${_minor_version}\\InstallPath]
NO_DEFAULT_PATH
)
if (PYTHON_EXECUTABLE)
break()
endif()
endforeach()
endforeach()
endforeach()
endif()
endif()
endif(WIN32)