[vtkusers] CMake custom class python wrapping doesn't work
Evgeniya Malikova
evgenimalikova at gmail.com
Thu Oct 25 12:58:02 EDT 2018
Thank you very much, Jean-Christophe.
Finally managed to write hierarchy files wrapping on base of macro "vtkMacroKitPythonWrap", it solved the issue.
Best regards,
Evgenia
> On 15 Oct 2018, at 06:11, Jean-Christophe Fillion-Robin <jcfr at kitware.com> wrote:
>
> Hi Evgeniya,
>
> Based on my understanding, wrapping of custom classes without (1) creating an external VTK module or (2) using the VTK build system (like Paraview does) is not supported.
>
> If possible, I suggest you re-organize your code to create a VTK external module. That you will be able to use the VTK CMake API by including the vtkExternalmoduleMacros.
> For example, see https://github.com/Kitware/VTK/blob/master/Rendering/OpenVR/CMakeLists.txt <https://github.com/Kitware/VTK/blob/master/Rendering/OpenVR/CMakeLists.txt> (while this module can be built both as a built-in module and an external module, it illustrates the idea)
>
>
>
> If not possible, you need to make sure the python hierarchy files are generated.
> Here is a module we maintain in Slicer that enable this. It provides a macro named "vtkMacroKitPythonWrap"
> See https://github.com/Slicer/Slicer/blob/master/CMake/vtkMacroKitPythonWrap.cmake <https://github.com/Slicer/Slicer/blob/master/CMake/vtkMacroKitPythonWrap.cmake>
>
> Here is an example of usage:
>
> include(vtkMacroKitPythonWrap)
>
> vtkMacroKitPythonWrap(
> KIT_NAME vtkFoo
> KIT_SRCS ${vtkFoo_SRCS}
> )
>
>
> Hth
> Jc
>
> On Mon, Oct 15, 2018 at 12:48 AM Evgeniya Malikova <evgenimalikova at gmail.com <mailto:evgenimalikova at gmail.com>> wrote:
> Hello.
> I have a common wrapping that previously worked on windows 8.1 with
> VTK 8.1.1. As I had problems to compile vtk8 on Mac (don't remember
> all details of that) I switched to
> https://gitlab.kitware.com/vtk/vtk.git <https://gitlab.kitware.com/vtk/vtk.git>.
>
> With following settings compilation on Mac of custom class gives a
> strange error, referencing some hierarchy file:
>
> [ 85%] Built target vtkHF
>
> make[5]: *** No rule to make target
> `../../hf/pythonClasses/vtkHFHierarchy', needed by
> `hf/pythonClasses/vtkHFFunctionPython.cxx'. Stop.
>
> make[4]: *** [hf/pythonClasses/CMakeFiles/vtkHFPythonD.dir/all] Error 2
>
> make[3]: *** [all] Error 2
>
> make[2]: *** [hfvisual-prefix/src/hfvisual-stamp/hfvisual-build] Error 2
>
> make[1]: *** [CMakeFiles/hfvisual.dir/all] Error 2
>
> make: *** [all] Error 2
>
> //-------------
>
> My CMakeLists:
>
>
> find_package(VTK REQUIRED
> vtkCommonCore
> vtkCommonDataModel
> vtkCommonExecutionModel
> vtkImagingHybrid
> vtkImagingCore
> vtkImagingStencil
> vtkImagingGeneral
> vtkFiltersCore
> vtkRenderingCore
> vtkWrappingPythonCore
>
> )
> include(${VTK_USE_FILE})
>
> # Python and vtk wrapping
> find_package(PythonInterp REQUIRED)
> find_package(PythonLibs ${PYTHON_VERSION_STRING} EXACT REQUIRED)
> set(CUSTOM_PYTHON_EXECUTABLE ${PYTHON_EXECUTABLE})
> include(vtkWrapPython)
> include_directories("${PYTHON_INCLUDE_PATH}")
>
>
> set (OPENAL_INCLUDE_DIR ${INSTALL_DEPENDENCIES_DIR}/include/AL)
>
> LINK_DIRECTORIES(${INSTALL_DEPENDENCIES_DIR}/lib/)
> set(CMAKE_MACOSX_RPATH 1)
>
> set (openAL OpenAL32)
> if( APPLE )
> set (openAL OpenAL)
> endif()
>
> set (OPENAL_LIBRARY} ${INSTALL_DEPENDENCIES_DIR}/lib/${openAL})
> set (ALUT_LIBRARY} ${INSTALL_DEPENDENCIES_DIR}/lib/alut)
> include_directories(${OPENAL_INCLUDE_DIR})
> include_directories(${INSTALL_DEPENDENCIES_DIR}/include)
>
>
> #######################################
> # Building vtkHFFunction
> list(APPEND libraries_list cppinterpreter)
> ....
>
> add_library(vtkHF SHARED ${WRAP_LIST})
>
> # Build main library
> TARGET_LINK_LIBRARIES(vtkHF ${VTK_LIBRARIES} alut ${openAL} ${libraries_list})
> if(APPLE)
> set_target_properties(vtkHF PROPERTIES SUFFIX ".so")
> endif()
>
> set(vtkHFPython_EXCLUDE_FROM_WRAP_HIERARCHY 1)
> # Python wrapping
>
> include_directories("${PYTHON_INCLUDE_PATH}")
>
>
> #include_directories(${PythonVTKLibs_SOURCE_DIR})
> #######################################
> # Wrapping
>
> vtk_wrap_python3(vtkHFPython KitPython_SRCS "${WRAP_LIST}")
> add_library(vtkHFPythonD ${KitPython_SRCS} ${WRAP_LIST} )
>
>
> IF(KIT_PYTHON_DEPS)
> ADD_DEPENDENCIES(vtkHFPythonD ${KIT_PYTHON_DEPS} ${VTK_PYTHON_LIBRARIES})
> ENDIF(KIT_PYTHON_DEPS)
>
> #Here happens error
> python_add_module(vtkHFPython vtkHFPythonInit.cxx)
>
>
> What I do wrong?
> Thank you in advance,
> Best regards, Evgeniya
> _______________________________________________
> Powered by www.kitware.com <http://www.kitware.com/>
>
> Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html <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 <http://www.vtk.org/Wiki/VTK_FAQ>
>
> Search the list archives at: http://markmail.org/search/?q=vtkusers <http://markmail.org/search/?q=vtkusers>
>
> Follow this link to subscribe/unsubscribe:
> https://public.kitware.com/mailman/listinfo/vtkusers <https://public.kitware.com/mailman/listinfo/vtkusers>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://public.kitware.com/pipermail/vtkusers/attachments/20181025/0ba20586/attachment.html>
More information about the vtkusers
mailing list