CMakeLists.txt 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. project(ctkSimplePythonShell)
  2. #
  3. # 3rd party dependencies
  4. #
  5. if(CTK_LIB_Scripting/Python/Core AND CTK_LIB_Scripting/Python/Core_PYTHONQT_USE_VTK)
  6. find_package(VTK REQUIRED)
  7. include(${VTK_USE_FILE})
  8. endif()
  9. #
  10. # See CTK/CMake/ctkMacroBuildApp.cmake for details
  11. #
  12. set(KIT_SRCS
  13. ${CMAKE_CURRENT_BINARY_DIR}/ctkSimplePythonManager.cpp
  14. ctkSimplePythonManager.h
  15. ctkSimplePythonQtDecorators.h
  16. ctkSimplePythonShellMain.cpp
  17. ctkTestWrappedQProperty.h
  18. ctkTestWrappedQInvokable.h
  19. ctkTestWrappedSlot.h
  20. )
  21. if(CTK_LIB_Scripting/Python/Core AND CTK_LIB_Scripting/Python/Core_PYTHONQT_USE_VTK)
  22. list(APPEND KIT_SRCS
  23. ctkTestWrappedQListOfVTKObject.h
  24. ctkTestWrappedVTKObserver.h
  25. ctkTestWrappedVTKQInvokable.h
  26. ctkTestWrappedVTKSlot.h
  27. )
  28. endif()
  29. # Headers that should run through moc
  30. set(KIT_MOC_SRCS
  31. ctkSimplePythonManager.h
  32. ctkSimplePythonQtDecorators.h
  33. ctkTestWrappedQProperty.h
  34. ctkTestWrappedQInvokable.h
  35. ctkTestWrappedSlot.h
  36. )
  37. if(CTK_LIB_Scripting/Python/Core AND CTK_LIB_Scripting/Python/Core_PYTHONQT_USE_VTK)
  38. list(APPEND KIT_MOC_SRCS
  39. ctkTestWrappedQListOfVTKObject.h
  40. ctkTestWrappedVTKObserver.h
  41. ctkTestWrappedVTKQInvokable.h
  42. ctkTestWrappedVTKSlot.h
  43. )
  44. endif()
  45. # UI files
  46. set(KIT_UI_FORMS
  47. )
  48. # Resources
  49. set(KIT_resources
  50. )
  51. set(KIT_INCLUDE_DIRECTORIES
  52. )
  53. set(VTK_LIBRARIES
  54. )
  55. if(CTK_LIB_Scripting/Python/Core AND CTK_LIB_Scripting/Python/Core_PYTHONQT_USE_VTK)
  56. list(APPEND KIT_INCLUDE_DIRECTORIES
  57. ${CTKVisualizationVTKCore_BINARY_DIR}
  58. ${CTKVisualizationVTKCore_SOURCE_DIR}
  59. )
  60. endif()
  61. # Target libraries - See CMake/ctkFunctionGetTargetLibraries.cmake
  62. # The following macro will read the target libraries from the file 'target_libraries.cmake'
  63. ctkFunctionGetTargetLibraries(KIT_target_libraries)
  64. if(CTK_LIB_Scripting/Python/Core AND CTK_LIB_Scripting/Python/Core_PYTHONQT_USE_VTK)
  65. list(APPEND KIT_target_libraries
  66. CTKVisualizationVTKCore
  67. vtkFiltering
  68. )
  69. endif()
  70. # Configure file will be configured using CTK_WRAP_PYTHONQT_LIGHT and
  71. # CTK_BUILD_SHARED_LIBS variables
  72. configure_file(
  73. ctkSimplePythonShellConfigure.h.in
  74. ${CMAKE_CURRENT_BINARY_DIR}/ctkSimplePythonShellConfigure.h
  75. )
  76. # The following block generate the code required to initialize the wrapper
  77. # when CTK is statically built.
  78. if(NOT CTK_BUILD_SHARED_LIBS AND CTK_WRAP_PYTHONQT_LIGHT)
  79. # Update list of target libraries with the list of available PythonQt libraries
  80. # and set variables holding list of pythonqt initialization method
  81. set(CTK_PYTHONQT_INITIALIZATION_METHOD_DEFINITION)
  82. set(CTK_PYTHONQT_INITIALIZATION_METHOD_CALL)
  83. # To avoid the complex process of resolving the dependencies associated with each
  84. # external project required by each decorator. For now, let's just include the decorator
  85. # associated with CTKCore and CTKWidgets.
  86. set(MY_CTK_WRAPPED_LIBRARIES_PYTHONQT)
  87. if(CTK_LIB_Core)
  88. list(APPEND MY_CTK_WRAPPED_LIBRARIES_PYTHONQT CTKCore)
  89. endif()
  90. if(CTK_LIB_Widgets)
  91. list(APPEND MY_CTK_WRAPPED_LIBRARIES_PYTHONQT CTKWidgets)
  92. endif()
  93. if(CTK_LIB_DICOM/Core)
  94. list(APPEND MY_CTK_WRAPPED_LIBRARIES_PYTHONQT CTKDICOMCore)
  95. endif()
  96. if(CTK_LIB_DICOM/Widgets)
  97. list(APPEND MY_CTK_WRAPPED_LIBRARIES_PYTHONQT CTKDICOMWidgets)
  98. endif()
  99. foreach(lib_name ${MY_CTK_WRAPPED_LIBRARIES_PYTHONQT})
  100. list(APPEND KIT_target_libraries ${lib_name}PythonQt)
  101. set(CTK_PYTHONQT_INITIALIZATION_METHOD_DEFINITION
  102. "${CTK_PYTHONQT_INITIALIZATION_METHOD_DEFINITION}
  103. extern \"C\"{ void init${lib_name}PythonQt(); }")
  104. set(CTK_PYTHONQT_INITIALIZATION_METHOD_CALL
  105. "${CTK_PYTHONQT_INITIALIZATION_METHOD_CALL}
  106. init${lib_name}PythonQt();")
  107. endforeach()
  108. endif()
  109. configure_file(
  110. ctkSimplePythonManager.cpp.in
  111. ${CMAKE_CURRENT_BINARY_DIR}/ctkSimplePythonManager.cpp
  112. )
  113. ctkMacroBuildApp(
  114. NAME ${PROJECT_NAME}
  115. SRCS ${KIT_SRCS}
  116. MOC_SRCS ${KIT_MOC_SRCS}
  117. UI_FORMS ${KIT_UI_FORMS}
  118. INCLUDE_DIRECTORIES ${KIT_INCLUDE_DIRECTORIES}
  119. TARGET_LIBRARIES ${KIT_target_libraries}
  120. RESOURCES ${KIT_resources}
  121. )
  122. add_subdirectory(Python)
  123. # Testing
  124. if(BUILD_TESTING)
  125. add_subdirectory(Testing)
  126. endif()