Files
ResInsight/ThirdParty/Ert/python/cmake/python_module_versions.cmake
T

41 lines
1.6 KiB
CMake

# try import python module, if success, check its version, store as PY_module.
# the module is imported as-is, hence the case (e.g. PyQt4) must be correct.
function(python_module_version module)
set(PY_VERSION_ACCESSOR "__version__")
set(PY_module_name ${module})
if(${module} MATCHES "PyQt4")
set(PY_module_name "PyQt4.Qt")
set(PY_VERSION_ACCESSOR "PYQT_VERSION_STR")
endif()
execute_process(COMMAND "${PYTHON_EXECUTABLE}" "-c" "import ${PY_module_name} as py_m; print(py_m.${PY_VERSION_ACCESSOR})"
RESULT_VARIABLE _${module}_fail# error code 0 if success
OUTPUT_VARIABLE _${module}_version# major.minor.patch
ERROR_VARIABLE stderr_output
OUTPUT_STRIP_TRAILING_WHITESPACE)
if(NOT _${module}_fail)
set(PY_${module} ${_${module}_version})# local scope, for message
set(PY_${module} ${_${module}_version} PARENT_SCOPE)
endif()
endfunction()
# If we find the correct module and new enough version, set PY_package, where
# "package" is the given argument to the version we found else, display warning
# and do not set any variables.
function(python_module package version)
python_module_version(${package})
if(NOT DEFINED PY_${package})
message("Could not find Python module " ${package})
elseif(${PY_${package}} VERSION_LESS ${version})
message(WARNING "Python module ${package} too old. "
"Wanted ${version}, found ${PY_${package}}")
else()
message(STATUS "Found ${package}. ${PY_${package}} >= ${version}")
set(PY_${package} ${version} PARENT_SCOPE)
endif()
endfunction()