CMakeLists.txt 5.9 KB

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