[vtkusers] Building VTK with Python 2.6 on Windows 7
David Partyka
david.partyka at kitware.com
Wed Jun 8 07:45:11 EDT 2011
The first line of the error message is the key.
Set PYTHON_LIBRARY in the cmake interface to the location of your Python
library. For example on my system it is set to:
PYTHON_LIBRARY C:/Kitware/ParaView
3.10/build-x32/python-build/PCbuild/python27.lib
You will likely also need to set PYTHON_INCLUD_DIR and PYTHON_EXECUTABLE in
a similar fashion.
On Wed, Jun 8, 2011 at 7:28 AM, Thomas Templier <templier at neuro.mpg.de>wrote:
> Cmake 2.8.4
>
> VTK 5.6.1
>
> Compiler : Microsoft Visual C++ 2010 Express
>
>
>
> Dear list,
>
>
>
> I’m struggling with the installation of VTK with python. In Cmake, I
> activate VTK_WRAP_PYTHON and BUILD_SHARED_LIBS. It gives me the following
> (see below):
>
>
>
> Then I tried all possible combinations to set the pathways for include, and
> for the libraries (with PATH, DIR or even DIRS) (should I set /Lib or /libs
> ?) , then I have the same log as before.
>
>
>
> I’ve googled it, and found that some years ago, Cmake had a problem with
> finding Pyhon libraries. But it seems to have been fixed a long time ago
> also. Here is my FindPythonLibs file (below):
>
> I don’t understand why it does not work.
>
> Has anybody an idea to help me ?
>
>
>
> Thank you
>
>
>
> Best Regards
>
>
>
> Thomas
>
>
>
>
>
> Could NOT find PythonLibs (missing: PYTHON_LIBRARIES)
>
> CMake Error: The following variables are used in this project, but they are
> set to NOTFOUND.
>
> Please set them or make sure they are set and tested correctly in the CMake
> files:
>
> PYTHON_LIBRARY (ADVANCED)
>
> linked by target "vtkWrapPython" in directory C:/VTK/vtk-5.4.2/Wrapping
>
> linked by target "vtkCommonPython" in directory C:/VTK/vtk-5.4.2/Common
>
> linked by target "vtkCommonPythonD" in directory C:/VTK/vtk-5.4.2/Common
>
> linked by target "vtkFilteringPython" in directory
> C:/VTK/vtk-5.4.2/Filtering
>
> linked by target "vtkFilteringPythonD" in directory
> C:/VTK/vtk-5.4.2/Filtering
>
> linked by target "vtkImagingPython" in directory C:/VTK/vtk-5.4.2/Imaging
>
> linked by target "vtkImagingPythonD" in directory C:/VTK/vtk-5.4.2/Imaging
>
> linked by target "vtkGraphicsPython" in directory C:/VTK/vtk-5.4.2/Graphics
>
> linked by target "vtkGraphicsPythonD" in directory
> C:/VTK/vtk-5.4.2/Graphics
>
> linked by target "vtkGenericFilteringPython" in directory
> C:/VTK/vtk-5.4.2/GenericFiltering
>
> linked by target "vtkGenericFilteringPythonD" in directory
> C:/VTK/vtk-5.4.2/GenericFiltering
>
> linked by target "vtkIOPython" in directory C:/VTK/vtk-5.4.2/IO
>
> linked by target "vtkIOPythonD" in directory C:/VTK/vtk-5.4.2/IO
>
> linked by target "vtkRenderingPython" in directory
> C:/VTK/vtk-5.4.2/Rendering
>
> linked by target "vtkRenderingPythonD" in directory
> C:/VTK/vtk-5.4.2/Rendering
>
> linked by target "vtkVolumeRenderingPython" in directory
> C:/VTK/vtk-5.4.2/VolumeRendering
>
> linked by target "vtkVolumeRenderingPythonD" in directory
> C:/VTK/vtk-5.4.2/VolumeRendering
>
> linked by target "vtkHybridPython" in directory C:/VTK/vtk-5.4.2/Hybrid
>
> linked by target "vtkHybridPythonD" in directory C:/VTK/vtk-5.4.2/Hybrid
>
> linked by target "vtkWidgetsPython" in directory C:/VTK/vtk-5.4.2/Widgets
>
> linked by target "vtkWidgetsPythonD" in directory C:/VTK/vtk-5.4.2/Widgets
>
> linked by target "vtkInfovisPython" in directory C:/VTK/vtk-5.4.2/Infovis
>
> linked by target "vtkInfovisPythonD" in directory C:/VTK/vtk-5.4.2/Infovis
>
> linked by target "vtkGeovisPython" in directory C:/VTK/vtk-5.4.2/Geovis
>
> linked by target "vtkGeovisPythonD" in directory C:/VTK/vtk-5.4.2/Geovis
>
> linked by target "vtkViewsPython" in directory C:/VTK/vtk-5.4.2/Views
>
> linked by target "vtkViewsPythonD" in directory C:/VTK/vtk-5.4.2/Views
>
> linked by target "vtkpython" in directory C:/VTK/vtk-5.4.2/Wrapping/Python
>
> Configuring incomplete, errors occurred!
>
>
>
>
>
>
>
>
>
> *************
>
> *************
>
> *************
>
> FindPythonLibs
>
>
>
>
>
>
>
>
>
> # - Find python libraries
>
> # This module finds if Python is installed and determines where the
>
> # include files and libraries are. It also determines what the name of
>
> # the library is. This code sets the following variables:
>
> #
>
> # PYTHONLIBS_FOUND - have the Python libs been found
>
> # PYTHON_LIBRARIES - path to the python library
>
> # 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_ADDITIONAL_VERSIONS - list of additional Python versions to
> search for
>
>
>
>
> #=============================================================================
>
> # Copyright 2001-2009 Kitware, Inc.
>
> #
>
> # Distributed under the OSI-approved BSD License (the "License");
>
> # see accompanying file Copyright.txt for details.
>
> #
>
> # This software is distributed WITHOUT ANY WARRANTY; without even the
>
> # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
>
> # See the License for more information.
>
>
> #=============================================================================
>
> # (To distribute this file outside of CMake, substitute the full
>
> # License text for the above reference.)
>
>
>
> INCLUDE(CMakeFindFrameworks)
>
> # Search for the python framework on Apple.
>
> CMAKE_FIND_FRAMEWORKS(Python)
>
>
>
> # Set up the versions we know about, in the order we will search. Always
> add
>
> # the user supplied additional versions to the front.
>
> set(_Python_VERSIONS
>
> ${Python_ADDITIONAL_VERSIONS}
>
> 2.7 2.6 2.5 2.4 2.3 2.2 2.1 2.0 1.6 1.5)
>
>
>
> FOREACH(_CURRENT_VERSION ${_Python_VERSIONS})
>
> STRING(REPLACE "." "" _CURRENT_VERSION_NO_DOTS ${_CURRENT_VERSION})
>
> IF(WIN32)
>
> FIND_LIBRARY(PYTHON_DEBUG_LIBRARY
>
> NAMES python${_CURRENT_VERSION_NO_DOTS}_d python
>
> PATHS
>
>
> [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}\\InstallPath]/libs/Debug
>
>
> [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}\\InstallPath]/libs
> )
>
> ENDIF(WIN32)
>
>
>
> FIND_LIBRARY(PYTHON_LIBRARY
>
> NAMES python${_CURRENT_VERSION_NO_DOTS} python${_CURRENT_VERSION}
>
> PATHS
>
>
> [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}\\InstallPath]/libs
>
> # Avoid finding the .dll in the PATH. We want the .lib.
>
> NO_SYSTEM_ENVIRONMENT_PATH
>
> )
>
> # Look for the static library in the Python config directory
>
> FIND_LIBRARY(PYTHON_LIBRARY
>
> NAMES python${_CURRENT_VERSION_NO_DOTS} python${_CURRENT_VERSION}
>
> # Avoid finding the .dll in the PATH. We want the .lib.
>
> NO_SYSTEM_ENVIRONMENT_PATH
>
> # This is where the static library is usually located
>
> PATH_SUFFIXES python${_CURRENT_VERSION}/config
>
> )
>
>
>
> # For backward compatibility, honour value of PYTHON_INCLUDE_PATH, if
>
> # PYTHON_INCLUDE_DIR is not set.
>
> IF(DEFINED PYTHON_INCLUDE_PATH AND NOT DEFINED PYTHON_INCLUDE_DIR)
>
> SET(PYTHON_INCLUDE_DIR "${PYTHON_INCLUDE_PATH}" CACHE PATH
>
> "Path to where Python.h is found" FORCE)
>
> ENDIF(DEFINED PYTHON_INCLUDE_PATH AND NOT DEFINED PYTHON_INCLUDE_DIR)
>
>
>
> SET(PYTHON_FRAMEWORK_INCLUDES)
>
> IF(Python_FRAMEWORKS AND NOT PYTHON_INCLUDE_DIR)
>
> FOREACH(dir ${Python_FRAMEWORKS})
>
> SET(PYTHON_FRAMEWORK_INCLUDES ${PYTHON_FRAMEWORK_INCLUDES}
>
>
> ${dir}/Versions/${_CURRENT_VERSION}/include/python${_CURRENT_VERSION})
>
> ENDFOREACH(dir)
>
> ENDIF(Python_FRAMEWORKS AND NOT PYTHON_INCLUDE_DIR)
>
>
>
> FIND_PATH(PYTHON_INCLUDE_DIR
>
> NAMES Python.h
>
> PATHS
>
> ${PYTHON_FRAMEWORK_INCLUDES}
>
>
> [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}\\InstallPath]/include
>
> PATH_SUFFIXES
>
> python${_CURRENT_VERSION}
>
> )
>
>
>
> # For backward compatibility, set PYTHON_INCLUDE_PATH, but make it
> internal.
>
> SET(PYTHON_INCLUDE_PATH "${PYTHON_INCLUDE_DIR}" CACHE INTERNAL
>
> "Path to where Python.h is found (deprecated)")
>
>
>
> ENDFOREACH(_CURRENT_VERSION)
>
>
>
> MARK_AS_ADVANCED(
>
> PYTHON_DEBUG_LIBRARY
>
> PYTHON_LIBRARY
>
> 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
>
> # module.
>
> SET(PYTHON_INCLUDE_DIRS "${PYTHON_INCLUDE_DIR}")
>
> SET(PYTHON_LIBRARIES "${PYTHON_LIBRARY}")
>
> SET(PYTHON_DEBUG_LIBRARIES "${PYTHON_DEBUG_LIBRARY}")
>
>
>
>
>
> INCLUDE(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
>
> FIND_PACKAGE_HANDLE_STANDARD_ARGS(PythonLibs DEFAULT_MSG PYTHON_LIBRARIES
> PYTHON_INCLUDE_DIRS)
>
>
>
>
>
> # PYTHON_ADD_MODULE(<name> src1 src2 ... srcN) is used to build modules for
> python.
>
> # PYTHON_WRITE_MODULES_HEADER(<filename>) writes a header file you can
> include
>
> # in your sources to initialize the static python modules
>
> FUNCTION(PYTHON_ADD_MODULE _NAME )
>
> GET_PROPERTY(_TARGET_SUPPORTS_SHARED_LIBS
>
> GLOBAL PROPERTY TARGET_SUPPORTS_SHARED_LIBS)
>
> OPTION(PYTHON_ENABLE_MODULE_${_NAME} "Add module ${_NAME}" TRUE)
>
> OPTION(PYTHON_MODULE_${_NAME}_BUILD_SHARED
>
> "Add module ${_NAME} shared" ${_TARGET_SUPPORTS_SHARED_LIBS})
>
>
>
> # Mark these options as advanced
>
> MARK_AS_ADVANCED(PYTHON_ENABLE_MODULE_${_NAME}
>
> PYTHON_MODULE_${_NAME}_BUILD_SHARED)
>
>
>
> IF(PYTHON_ENABLE_MODULE_${_NAME})
>
> IF(PYTHON_MODULE_${_NAME}_BUILD_SHARED)
>
> SET(PY_MODULE_TYPE MODULE)
>
> ELSE(PYTHON_MODULE_${_NAME}_BUILD_SHARED)
>
> SET(PY_MODULE_TYPE STATIC)
>
> SET_PROPERTY(GLOBAL APPEND PROPERTY PY_STATIC_MODULES_LIST
> ${_NAME})
>
> ENDIF(PYTHON_MODULE_${_NAME}_BUILD_SHARED)
>
>
>
> SET_PROPERTY(GLOBAL APPEND PROPERTY PY_MODULES_LIST ${_NAME})
>
> ADD_LIBRARY(${_NAME} ${PY_MODULE_TYPE} ${ARGN})
>
> # TARGET_LINK_LIBRARIES(${_NAME} ${PYTHON_LIBRARIES})
>
>
>
> IF(PYTHON_MODULE_${_NAME}_BUILD_SHARED)
>
> SET_TARGET_PROPERTIES(${_NAME} PROPERTIES PREFIX
> "${PYTHON_MODULE_PREFIX}")
>
> IF(WIN32 AND NOT CYGWIN)
>
> SET_TARGET_PROPERTIES(${_NAME} PROPERTIES SUFFIX ".pyd")
>
> ENDIF(WIN32 AND NOT CYGWIN)
>
> ENDIF(PYTHON_MODULE_${_NAME}_BUILD_SHARED)
>
>
>
> ENDIF(PYTHON_ENABLE_MODULE_${_NAME})
>
> ENDFUNCTION(PYTHON_ADD_MODULE)
>
>
>
> FUNCTION(PYTHON_WRITE_MODULES_HEADER _filename)
>
>
>
> GET_PROPERTY(PY_STATIC_MODULES_LIST GLOBAL PROPERTY
> PY_STATIC_MODULES_LIST)
>
>
>
> GET_FILENAME_COMPONENT(_name "${_filename}" NAME)
>
> STRING(REPLACE "." "_" _name "${_name}")
>
> STRING(TOUPPER ${_name} _nameUpper)
>
> SET(_filename ${CMAKE_CURRENT_BINARY_DIR}/${_filename})
>
>
>
> SET(_filenameTmp "${_filename}.in")
>
> FILE(WRITE ${_filenameTmp} "/*Created by cmake, do not edit, changes will
> be lost*/\n")
>
> FILE(APPEND ${_filenameTmp}
>
> "#ifndef ${_nameUpper}
>
> #define ${_nameUpper}
>
>
>
> #include <Python.h>
>
>
>
> #ifdef __cplusplus
>
> extern \"C\" {
>
> #endif /* __cplusplus */
>
>
>
> ")
>
>
>
> FOREACH(_currentModule ${PY_STATIC_MODULES_LIST})
>
> FILE(APPEND ${_filenameTmp} "extern void
> init${PYTHON_MODULE_PREFIX}${_currentModule}(void);\n\n")
>
> ENDFOREACH(_currentModule ${PY_STATIC_MODULES_LIST})
>
>
>
> FILE(APPEND ${_filenameTmp}
>
> "#ifdef __cplusplus
>
> }
>
> #endif /* __cplusplus */
>
>
>
> ")
>
>
>
>
>
> FOREACH(_currentModule ${PY_STATIC_MODULES_LIST})
>
> FILE(APPEND ${_filenameTmp} "int ${_name}_${_currentModule}(void)
> \n{\n static char name[]=\"${PYTHON_MODULE_PREFIX}${_currentModule}\";
> return PyImport_AppendInittab(name,
> init${PYTHON_MODULE_PREFIX}${_currentModule});\n}\n\n")
>
> ENDFOREACH(_currentModule ${PY_STATIC_MODULES_LIST})
>
>
>
> FILE(APPEND ${_filenameTmp} "void
> ${_name}_LoadAllPythonModules(void)\n{\n")
>
> FOREACH(_currentModule ${PY_STATIC_MODULES_LIST})
>
> FILE(APPEND ${_filenameTmp} " ${_name}_${_currentModule}();\n")
>
> ENDFOREACH(_currentModule ${PY_STATIC_MODULES_LIST})
>
> FILE(APPEND ${_filenameTmp} "}\n\n")
>
> FILE(APPEND ${_filenameTmp} "#ifndef EXCLUDE_LOAD_ALL_FUNCTION\nvoid
> CMakeLoadAllPythonModules(void)\n{\n
> ${_name}_LoadAllPythonModules();\n}\n#endif\n\n#endif\n")
>
>
>
> # with CONFIGURE_FILE() cmake complains that you may not use a file created
> using FILE(WRITE) as input file for CONFIGURE_FILE()
>
> EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E copy_if_different
> "${_filenameTmp}" "${_filename}" OUTPUT_QUIET ERROR_QUIET)
>
>
>
> ENDFUNCTION(PYTHON_WRITE_MODULES_HEADER)
>
>
>
>
>
>
>
> _______________________________________________
> 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 VTK FAQ at:
> http://www.vtk.org/Wiki/VTK_FAQ
>
> Follow this link to subscribe/unsubscribe:
> http://www.vtk.org/mailman/listinfo/vtkusers
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20110608/ef4c675e/attachment.htm>
More information about the vtkusers
mailing list