CMakeLists.txt 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  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. set(CTK_ADD_WIDGET_EVENT_PLAYERS "${CTK_ADD_WIDGET_EVENT_PLAYERS} this->eventPlayer()->addWidgetEventPlayer(new ctkFileDialogEventPlayer(util));\n")
  66. set(CTK_ADD_HEADER_EVENT_TRANSLATORS "// Event translator includes\n")
  67. #set(CTK_ADD_WIDGET_EVENT_TRANSLATORS)
  68. foreach(CTK_HEADER_EVENT_TRANSLATORS ${CTK_HEADERS_EVENT_TRANSLATORS})
  69. set(CTK_ADD_HEADER_EVENT_TRANSLATORS "${CTK_ADD_HEADER_EVENT_TRANSLATORS}#include <${CTK_HEADER_EVENT_TRANSLATORS}>\n")
  70. get_filename_component(CTK_HEADER_EVENT_TRANSLATOR_NAME ${CTK_HEADER_EVENT_TRANSLATORS} NAME_WE)
  71. set(is_special_translator FALSE)
  72. string(COMPARE EQUAL "ctkVTKRenderViewEventTranslator" ${CTK_HEADER_EVENT_TRANSLATOR_NAME} is_special_translator)
  73. if(is_special_translator)
  74. set(CTK_ADD_WIDGET_EVENT_TRANSLATORS "${CTK_ADD_WIDGET_EVENT_TRANSLATORS} this->eventTranslator()->addWidgetEventTranslator(new ${CTK_HEADER_EVENT_TRANSLATOR_NAME}(\"QVTKWidget\"));\n")
  75. endif()
  76. if(NOT is_special_translator)
  77. # Explicitly skip this translator so that it could be added first in the list of translators to register.
  78. string(COMPARE EQUAL "ctkFileDialogEventTranslator" ${CTK_HEADER_EVENT_TRANSLATOR_NAME} is_special_translator)
  79. endif()
  80. if(NOT is_special_translator)
  81. set(CTK_ADD_WIDGET_EVENT_TRANSLATORS "${CTK_ADD_WIDGET_EVENT_TRANSLATORS} this->eventTranslator()->addWidgetEventTranslator(new ${CTK_HEADER_EVENT_TRANSLATOR_NAME}());\n")
  82. endif()
  83. endforeach()
  84. set(CTK_ADD_WIDGET_EVENT_TRANSLATORS "${CTK_ADD_WIDGET_EVENT_TRANSLATORS} this->eventTranslator()->addWidgetEventTranslator(new ctkFileDialogEventTranslator(util));\n")
  85. set(KIT_INCLUDE_DIRECTORIES
  86. ${QtTesting_INCLUDE_DIRS}
  87. ${CTK_SUPERBUILD_BINARY_DIR} # For ctkConfig.h
  88. )
  89. foreach(libname ${CTK_ENABLED_LIBNAMES})
  90. list(APPEND KIT_INCLUDE_DIRECTORIES
  91. ${${libname}_SOURCE_DIR}
  92. ${${libname}_BINARY_DIR}
  93. )
  94. endforeach()
  95. configure_file(
  96. ctkQtTestingUtility.cpp.in
  97. ${CMAKE_CURRENT_BINARY_DIR}/ctkQtTestingUtility.cpp
  98. )
  99. # Source files
  100. set(KIT_SRCS
  101. ctkEventTranslatorPlayerWidget.cpp
  102. ctkEventTranslatorPlayerWidget.h
  103. ${CMAKE_CURRENT_BINARY_DIR}/ctkQtTestingUtility.cpp
  104. ctkQtTestingUtility.h
  105. ctkXMLEventObserver.cpp
  106. ctkXMLEventObserver.h
  107. ctkXMLEventSource.cpp
  108. ctkXMLEventSource.h
  109. )
  110. # Header that should run through moc
  111. set(KIT_MOC_SRCS
  112. ctkEventTranslatorPlayerWidget.h
  113. ctkQtTestingUtility.h
  114. ctkXMLEventObserver.h
  115. ctkXMLEventSource.h
  116. )
  117. # UI files
  118. set(KIT_UI_FORMS
  119. Resources/UI/ctkEventTranslatorPlayerWidget.ui
  120. )
  121. # Resources
  122. set(KIT_resources
  123. Resources/ctkQtTesting.qrc
  124. )
  125. # dependencie dynamic from all the libraries with Widgets + QtTesting
  126. set(KIT_target_libraries QtTesting)
  127. foreach(libname ${CTK_ENABLED_LIBNAMES})
  128. if(${libname} MATCHES "Widgets$")
  129. list(APPEND KIT_target_libraries ${libname})
  130. endif()
  131. endforeach()
  132. #message("${KIT_target_libraries}")
  133. ctkMacroBuildLib(
  134. NAME ${PROJECT_NAME}
  135. EXPORT_DIRECTIVE ${KIT_export_directive}
  136. SRCS ${KIT_SRCS}
  137. MOC_SRCS ${KIT_MOC_SRCS}
  138. UI_FORMS ${KIT_UI_FORMS}
  139. INCLUDE_DIRECTORIES ${KIT_INCLUDE_DIRECTORIES}
  140. TARGET_LIBRARIES ${KIT_target_libraries}
  141. RESOURCES ${KIT_resources}
  142. LIBRARY_TYPE ${CTK_LIBRARY_MODE}
  143. )
  144. if(CTK_WRAP_PYTHONQT_FULL OR CTK_WRAP_PYTHONQT_LIGHT)
  145. ctkMacroBuildLibWrapper(
  146. TARGET ${PROJECT_NAME}
  147. SRCS ${KIT_SRCS}
  148. WRAPPER_LIBRARY_TYPE ${CTK_LIBRARY_MODE}
  149. )
  150. endif()
  151. # Testing
  152. #if(BUILD_TESTING)
  153. # add_subdirectory(Testing)
  154. #endif()