Hi All, The attached patch changes FindPythonLibs.cmake so that it returns the following variables: PYTHON_VERSION PYTHON_MAJOR_VERSION PYTHON_MINOR_VERSION PYTHON_MICRO_VERSION
The purpose of this patch is to allow CMake scripts to perform conditional configuration based on what python version was found, e.g. in case different configuration is required for Python 3 versus Python 2. - David
diff --git a/Modules/FindPythonLibs.cmake b/Modules/FindPythonLibs.cmake index adcec46..b03001a 100644 --- a/Modules/FindPythonLibs.cmake +++ b/Modules/FindPythonLibs.cmake @@ -8,6 +8,12 @@ # PYTHON_INCLUDE_PATH - path to where Python.h is found (deprecated) # PYTHON_INCLUDE_DIRS - path to where Python.h is found # PYTHON_DEBUG_LIBRARIES - path to the debug library +# PYTHON_VERSION - python version string e.g. 2.7.1 +# PYTHON_MAJOR_VERSION - python major version number +# PYTHON_MINOR_VERSION - python minor version number +# PYTHON_MICRO_VERSION - python release version number +# +# This code uses the following variables: # Python_ADDITIONAL_VERSIONS - list of additional Python versions to search for #============================================================================= @@ -95,6 +101,26 @@ MARK_AS_ADVANCED( PYTHON_INCLUDE_DIR ) + +# look in PYTHON_INCLUDE_DIR for patchlevel.h, which contains the +# version number macros in all versions of python from 1.5 through +# at least version 3.2, and set these vars: PYTHON_VERSION, +# PYTHON_MAJOR_VERSION, PYTHON_MINOR_VERSION, PYTHON_MICRO_VERSION. +IF(PYTHON_INCLUDE_DIR) + SET(_VERSION_REGEX + "^#define[ \t]+PY([A-Z_]*_VERSION)[ \t]+[\"]*([0-9\\.]+)[\"]*[ \t]*$") + FILE(STRINGS "${PYTHON_INCLUDE_DIR}/patchlevel.h" _VERSION_STRINGS + LIMIT_COUNT 10 REGEX ${_VERSION_REGEX}) + FOREACH(_VERSION_STRING ${_VERSION_STRINGS}) + STRING(REGEX REPLACE ${_VERSION_REGEX} "PYTHON\\1" + _VERSION_VARIABLE "${_VERSION_STRING}") + STRING(REGEX REPLACE ${_VERSION_REGEX} "\\2" + _VERSION_NUMBER "${_VERSION_STRING}") + SET(${_VERSION_VARIABLE} ${_VERSION_NUMBER}) + ENDFOREACH(_VERSION_STRING ${_VERSION_STRINGS}) +ENDIF(PYTHON_INCLUDE_DIR) + + # We use PYTHON_INCLUDE_DIR, PYTHON_LIBRARY and PYTHON_DEBUG_LIBRARY for the # cache entries because they are meant to specify the location of a single # library. We now set the variables listed by the documentation for this
_______________________________________________ Powered by www.kitware.com Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Follow this link to subscribe/unsubscribe: http://www.cmake.org/mailman/listinfo/cmake