diff --git a/FindPythonModule.cmake b/FindPythonModule.cmake new file mode 100644 index 0000000..16e0bc4 --- /dev/null +++ b/FindPythonModule.cmake @@ -0,0 +1,45 @@ +# Find a Python module +# Found at http://www.cmake.org/pipermail/cmake/2011-January/041666.html +# To use do: find_python_module(NumPy REQUIRED) +# Reports also version of package, but you can't currently enforce a specific version to be +# searched for... + +include(FindPackageHandleStandardArgs) +function(find_python_module module) + # Fail if Python interpreter not known + if(NOT PYTHON_EXECUTABLE) + message(FATAL_ERROR "Use find_package(PythonInterp) first!") + endif() + string(TOLOWER ${module} _module_lower) + if(NOT ${_module_lower}) + if(ARGC GREATER 1 AND ARGV1 STREQUAL "REQUIRED") + set(${module}_FIND_REQUIRED TRUE) + endif() + # Find module location + execute_process( + COMMAND + ${PYTHON_EXECUTABLE} "-c" "import re, ${_module_lower}; print(re.compile('/__init__.py.*').sub('',${_module_lower}.__file__))" + RESULT_VARIABLE _${module}_status + OUTPUT_VARIABLE _${module}_location + ERROR_QUIET + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + if(NOT _${module}_status) + set(${module} ${_${module}_location} CACHE STRING "Location of Python module ${module}") + endif() + # Find module version + execute_process( + COMMAND + ${PYTHON_EXECUTABLE} "-c" "import re, ${_module_lower}; print(re.compile('/__init__.py.*').sub('',${_module_lower}.__version__))" + OUTPUT_VARIABLE _${module}_ver + ERROR_QUIET + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + endif() + + find_package_handle_standard_args(${module} + FOUND_VAR ${module}_FOUND + REQUIRED_VARS ${module} + VERSION_VAR _${module}_ver + ) +endfunction()