CMakeLists.txt 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. project(CTKQtTesting)
  2. #
  3. # 3rd party dependencies
  4. #
  5. find_package(QtTesting REQUIRED)
  6. #
  7. # See CTK/CMake/ctkMacroBuildLib.cmake for details
  8. #
  9. set(KIT_export_directive "CTK_QTTESTING_EXPORT")
  10. set(CTK_LIBS_WIDGET_DIR)
  11. # TODO The following code used to create CTK_ENABLED_LIBNAMES list could be
  12. # moved in the main CMakeLists.txt
  13. set(CTK_ENABLED_LIBNAMES)
  14. foreach(enabled_lib ${CTK_ENABLED_LIBS})
  15. string(REPLACE "/" "" lib_name_no_slash ${enabled_lib})
  16. list(APPEND CTK_ENABLED_LIBNAMES CTK${lib_name_no_slash})
  17. string(REGEX MATCHALL "Widgets" CTK_LIB_WIDGET ${lib_name_no_slash})
  18. if(CTK_LIB_WIDGET)
  19. list(APPEND CTK_LIBS_WIDGET_DIR CTK${lib_name_no_slash})
  20. endif()
  21. endforeach()
  22. # Recover All the event player/translator headers
  23. set(CTK_HEADERS_EVENT_PLAYERS)
  24. set(CTK_HEADERS_EVENT_TRANSLATORS)
  25. foreach(CTK_LIB_WIDGET_DIR ${CTK_LIBS_WIDGET_DIR})
  26. file(GLOB HEADERS RELATIVE ${${CTK_LIB_WIDGET_DIR}_SOURCE_DIR} "${${CTK_LIB_WIDGET_DIR}_SOURCE_DIR}/*.h")
  27. foreach(HEADER ${HEADERS})
  28. string(REGEX MATCHALL "EventPlayer" HEADER_PLAYER ${HEADER})
  29. string(REGEX MATCHALL "EventTranslator" HEADER_TRANSLATOR ${HEADER})
  30. if(HEADER_PLAYER)
  31. list(APPEND CTK_HEADERS_EVENT_PLAYERS ${HEADER})
  32. endif()
  33. if(HEADER_TRANSLATOR)
  34. list(APPEND CTK_HEADERS_EVENT_TRANSLATORS ${HEADER})
  35. endif()
  36. endforeach()
  37. endforeach()
  38. if(CTK_HEADERS_EVENT_PLAYERS)
  39. list(SORT CTK_HEADERS_EVENT_PLAYERS)
  40. endif()
  41. if(CTK_HEADERS_EVENT_TRANSLATORS)
  42. list(SORT CTK_HEADERS_EVENT_TRANSLATORS)
  43. endif()
  44. # Define the C++ code for the file ctkQtTestingUtility
  45. # Define the headers
  46. # Define the methode addWidgetEventTranslator/Player()
  47. set(CTK_ADD_HEADER_EVENT_PLAYERS "// Event player includes\n")
  48. #set(CTK_ADD_WIDGET_EVENT_PLAYERS)
  49. foreach(CTK_HEADER_EVENT_PLAYERS ${CTK_HEADERS_EVENT_PLAYERS})
  50. set(CTK_ADD_HEADER_EVENT_PLAYERS "${CTK_ADD_HEADER_EVENT_PLAYERS}#include <${CTK_HEADER_EVENT_PLAYERS}>\n")
  51. get_filename_component(CTK_HEADER_EVENT_PLAYER_NAME ${CTK_HEADER_EVENT_PLAYERS} NAME_WE)
  52. set(is_special_player FALSE)
  53. string(COMPARE EQUAL "ctkVTKRenderViewEventPlayer" ${CTK_HEADER_EVENT_PLAYER_NAME} is_special_player)
  54. if(is_special_player)
  55. set(CTK_ADD_WIDGET_EVENT_PLAYERS "${CTK_ADD_WIDGET_EVENT_PLAYERS} this->eventPlayer()->addWidgetEventPlayer(new ${CTK_HEADER_EVENT_PLAYER_NAME}(\"QVTKWidget\"));\n")
  56. endif()
  57. if(NOT is_special_player)
  58. # Explicitly skip this player so that it could be added first in the list of players to register.
  59. string(COMPARE EQUAL "ctkFileDialogEventPlayer" ${CTK_HEADER_EVENT_PLAYER_NAME} is_special_player)
  60. endif()
  61. if(NOT is_special_player)
  62. set(CTK_ADD_WIDGET_EVENT_PLAYERS "${CTK_ADD_WIDGET_EVENT_PLAYERS} this->eventPlayer()->addWidgetEventPlayer(new ${CTK_HEADER_EVENT_PLAYER_NAME}());\n")
  63. endif()
  64. endforeach()
  65. if(CTK_LIB_Widgets)
  66. set(CTK_ADD_WIDGET_EVENT_PLAYERS "${CTK_ADD_WIDGET_EVENT_PLAYERS} this->eventPlayer()->addWidgetEventPlayer(new ctkFileDialogEventPlayer(util));\n")
  67. endif()
  68. set(CTK_ADD_HEADER_EVENT_TRANSLATORS "// Event translator includes\n")
  69. #set(CTK_ADD_WIDGET_EVENT_TRANSLATORS)
  70. foreach(CTK_HEADER_EVENT_TRANSLATORS ${CTK_HEADERS_EVENT_TRANSLATORS})
  71. set(CTK_ADD_HEADER_EVENT_TRANSLATORS "${CTK_ADD_HEADER_EVENT_TRANSLATORS}#include <${CTK_HEADER_EVENT_TRANSLATORS}>\n")
  72. get_filename_component(CTK_HEADER_EVENT_TRANSLATOR_NAME ${CTK_HEADER_EVENT_TRANSLATORS} NAME_WE)
  73. set(is_special_translator FALSE)
  74. string(COMPARE EQUAL "ctkVTKRenderViewEventTranslator" ${CTK_HEADER_EVENT_TRANSLATOR_NAME} is_special_translator)
  75. if(is_special_translator)
  76. set(CTK_ADD_WIDGET_EVENT_TRANSLATORS "${CTK_ADD_WIDGET_EVENT_TRANSLATORS} this->eventTranslator()->addWidgetEventTranslator(new ${CTK_HEADER_EVENT_TRANSLATOR_NAME}(\"QVTKWidget\"));\n")
  77. endif()
  78. if(NOT is_special_translator)
  79. # Explicitly skip this translator so that it could be added first in the list of translators to register.
  80. string(COMPARE EQUAL "ctkFileDialogEventTranslator" ${CTK_HEADER_EVENT_TRANSLATOR_NAME} is_special_translator)
  81. endif()
  82. if(NOT is_special_translator)
  83. set(CTK_ADD_WIDGET_EVENT_TRANSLATORS "${CTK_ADD_WIDGET_EVENT_TRANSLATORS} this->eventTranslator()->addWidgetEventTranslator(new ${CTK_HEADER_EVENT_TRANSLATOR_NAME}());\n")
  84. endif()
  85. endforeach()
  86. if (CTK_LIB_Widgets)
  87. set(CTK_ADD_WIDGET_EVENT_TRANSLATORS "${CTK_ADD_WIDGET_EVENT_TRANSLATORS} this->eventTranslator()->addWidgetEventTranslator(new ctkFileDialogEventTranslator(util));\n")
  88. endif()
  89. set(KIT_INCLUDE_DIRECTORIES
  90. ${QtTesting_INCLUDE_DIRS}
  91. ${CTK_SUPERBUILD_BINARY_DIR} # For ctkConfig.h
  92. )
  93. foreach(libname ${CTK_ENABLED_LIBNAMES})
  94. list(APPEND KIT_INCLUDE_DIRECTORIES
  95. ${${libname}_SOURCE_DIR}
  96. ${${libname}_BINARY_DIR}
  97. )
  98. endforeach()
  99. configure_file(
  100. ctkQtTestingUtility.cpp.in
  101. ${CMAKE_CURRENT_BINARY_DIR}/ctkQtTestingUtility.cpp
  102. )
  103. # Source files
  104. set(KIT_SRCS
  105. ctkEventTranslatorPlayerWidget.cpp
  106. ctkEventTranslatorPlayerWidget.h
  107. ${CMAKE_CURRENT_BINARY_DIR}/ctkQtTestingUtility.cpp
  108. ctkQtTestingUtility.h
  109. ctkXMLEventObserver.cpp
  110. ctkXMLEventObserver.h
  111. ctkXMLEventSource.cpp
  112. ctkXMLEventSource.h
  113. )
  114. # Header that should run through moc
  115. set(KIT_MOC_SRCS
  116. ctkEventTranslatorPlayerWidget.h
  117. ctkQtTestingUtility.h
  118. ctkXMLEventObserver.h
  119. ctkXMLEventSource.h
  120. )
  121. # UI files
  122. set(KIT_UI_FORMS
  123. Resources/UI/ctkEventTranslatorPlayerWidget.ui
  124. )
  125. # Resources
  126. set(KIT_resources
  127. Resources/ctkQtTesting.qrc
  128. )
  129. # dependencie dynamic from all the libraries with Widgets + QtTesting
  130. set(KIT_target_libraries QtTesting)
  131. foreach(libname ${CTK_ENABLED_LIBNAMES})
  132. if(${libname} MATCHES "Widgets$")
  133. list(APPEND KIT_target_libraries ${libname})
  134. endif()
  135. endforeach()
  136. #message("${KIT_target_libraries}")
  137. ctkMacroBuildLib(
  138. NAME ${PROJECT_NAME}
  139. EXPORT_DIRECTIVE ${KIT_export_directive}
  140. SRCS ${KIT_SRCS}
  141. MOC_SRCS ${KIT_MOC_SRCS}
  142. UI_FORMS ${KIT_UI_FORMS}
  143. INCLUDE_DIRECTORIES ${KIT_INCLUDE_DIRECTORIES}
  144. TARGET_LIBRARIES ${KIT_target_libraries}
  145. RESOURCES ${KIT_resources}
  146. LIBRARY_TYPE ${CTK_LIBRARY_MODE}
  147. )
  148. if(CTK_WRAP_PYTHONQT_FULL OR CTK_WRAP_PYTHONQT_LIGHT)
  149. ctkMacroBuildLibWrapper(
  150. TARGET ${PROJECT_NAME}
  151. SRCS ${KIT_SRCS}
  152. WRAPPER_LIBRARY_TYPE ${CTK_LIBRARY_MODE}
  153. )
  154. endif()
  155. # Testing
  156. #if(BUILD_TESTING)
  157. # add_subdirectory(Testing)
  158. #endif()