ctkMacroCompilePythonScript.cmake 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. #
  2. # Based on ParaView/VTK/Utilities/vtkTclTest2Py/CMakeLists.txt and
  3. # ParaView/VTK/Wrapping/Python/CMakeLists.txt
  4. #
  5. MACRO(ctkMacroCompilePythonScript kit_name python_source_files dest_dir)
  6. FIND_PACKAGE(PythonInterp REQUIRED)
  7. SET(copied_python_files)
  8. FOREACH(file ${python_source_files})
  9. GET_FILENAME_COMPONENT(file_we "${CMAKE_CURRENT_SOURCE_DIR}/${file}" NAME_WE)
  10. SET(src "${CMAKE_CURRENT_SOURCE_DIR}/${file_we}.py")
  11. SET(tgt "${dest_dir}/${file_we}.py")
  12. SET(copied_python_files ${copied_python_files} ${tgt})
  13. ADD_CUSTOM_COMMAND(DEPENDS ${src}
  14. COMMAND ${CMAKE_COMMAND} -E copy ${src} ${tgt}
  15. OUTPUT ${tgt}
  16. COMMENT "source copy")
  17. ENDFOREACH()
  18. ADD_CUSTOM_TARGET(Copy${kit_name}PythonFiles
  19. ALL
  20. DEPENDS ${copied_python_files})
  21. # Byte compile the Python files.
  22. SET(compile_all_script "${CMAKE_CURRENT_BINARY_DIR}/compile_all_${kit_name}.py")
  23. # Based on paraview/VTK/Wrapping/Python/compile_all_vtk.py.in
  24. FILE(WRITE ${compile_all_script} "
  25. \# Auto-generated
  26. import compileall
  27. compileall.compile_dir('${dest_dir}')
  28. file = open('${CMAKE_CURRENT_BINARY_DIR}/${kit_name}_python_compile_complete', 'w')
  29. file.write('Done')
  30. ")
  31. ADD_CUSTOM_COMMAND(
  32. COMMAND ${PYTHON_EXECUTABLE}
  33. ARGS "${compile_all_script}"
  34. DEPENDS ${copied_python_files} ${compile_all_script}
  35. OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${kit_name}_python_compile_complete"
  36. )
  37. ADD_CUSTOM_TARGET(${kit_name}_pyc ALL
  38. DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/${kit_name}_python_compile_complete")
  39. # Install the slicer python module directory
  40. #INSTALL(DIRECTORY "${Slicer3_BINARY_DIR}/bin/Python"
  41. # DESTINATION "${Slicer3_INSTALL_BIN_DIR}" COMPONENT Runtime
  42. # USE_SOURCE_PERMISSIONS)
  43. ENDMACRO()