SuperBuild.cmake 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233
  1. SET(cmake_version_required "2.8")
  2. SET(cmake_version_required_dash "2-8")
  3. CMAKE_MINIMUM_REQUIRED(VERSION ${cmake_version_required})
  4. #
  5. # CTK_QMAKE_EXECUTABLE
  6. # CTK_KWSTYLE_EXECUTABLE
  7. # CTK_DCMTK_DIR
  8. #
  9. #-----------------------------------------------------------------------------
  10. # Enable and setup External project global properties
  11. #
  12. INCLUDE(ExternalProject)
  13. SET(ep_base "${CMAKE_BINARY_DIR}/CMakeExternals")
  14. SET_PROPERTY(DIRECTORY PROPERTY EP_BASE ${ep_base})
  15. SET(ep_install_dir ${ep_base}/Install)
  16. SET(ep_build_dir ${ep_base}/Build)
  17. SET(ep_source_dir ${ep_base}/Source)
  18. #SET(ep_parallelism_level)
  19. SET(ep_build_shared_libs ON)
  20. SET(ep_build_testing OFF)
  21. SET(ep_common_args
  22. -DCMAKE_INSTALL_PREFIX:PATH=${ep_install_dir}
  23. -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}
  24. -DBUILD_TESTING:BOOL=${ep_build_testing}
  25. )
  26. # Compute -G arg for configuring external projects with the same CMake generator:
  27. IF(CMAKE_EXTRA_GENERATOR)
  28. SET(gen "${CMAKE_EXTRA_GENERATOR} - ${CMAKE_GENERATOR}")
  29. ELSE()
  30. SET(gen "${CMAKE_GENERATOR}")
  31. ENDIF()
  32. # Use this value where semi-colons are needed in ep_add args:
  33. set(sep "^^")
  34. #-----------------------------------------------------------------------------
  35. # Update CMake module path
  36. #
  37. SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/CMake)
  38. #-----------------------------------------------------------------------------
  39. # Qt is expected to be setup by CTK/CMakeLists.txt just before it includes the SuperBuild script
  40. #
  41. #-----------------------------------------------------------------------------
  42. # KWStyle
  43. #
  44. SET (kwstyle_DEPENDS)
  45. IF (CTK_USE_KWSTYLE)
  46. IF (NOT DEFINED CTK_KWSTYLE_EXECUTABLE)
  47. SET(proj KWStyle-CVSHEAD)
  48. SET(kwstyle_DEPENDS ${proj})
  49. ExternalProject_Add(${proj}
  50. LIST_SEPARATOR ${sep}
  51. CVS_REPOSITORY ":pserver:anoncvs:@public.kitware.com:/cvsroot/KWStyle"
  52. CVS_MODULE "KWStyle"
  53. CMAKE_GENERATOR ${gen}
  54. CMAKE_ARGS
  55. ${ep_common_args}
  56. )
  57. SET(CTK_KWSTYLE_EXECUTABLE ${ep_install_dir}/bin/KWStyle)
  58. ENDIF()
  59. ENDIF()
  60. #-----------------------------------------------------------------------------
  61. # PythonQt
  62. #
  63. SET (PythonQt_DEPENDS)
  64. # IF ()
  65. # SET(proj PythonQt)
  66. # SET(PythonQt_DEPENDS ${proj})
  67. # ExternalProject_Add(${proj}
  68. # SVN_REPOSITORY "https://pythonqt.svn.sourceforge.net/svnroot/pythonqt/trunk"
  69. # CMAKE_GENERATOR ${gen}
  70. # PATCH_COMMAND ${CMAKE_COMMAND} -P ${pythonqt_patch_script}
  71. # CMAKE_ARGS
  72. # ${ep_common_args}
  73. # -DQT_QMAKE_EXECUTABLE:FILEPATH=${QT_QMAKE_EXECUTABLE}
  74. # #${vtk_PYTHON_ARGS}
  75. # INSTALL_COMMAND "")
  76. # ENDIF()
  77. #-----------------------------------------------------------------------------
  78. # Utilities/DCMTK
  79. #
  80. SET (DCMTK_DEPENDS)
  81. IF (NOT DEFINED CTK_DCMTK_DIR)
  82. SET(proj DCMTK)
  83. SET(DCMTK_DEPENDS ${proj})
  84. ExternalProject_Add(${proj}
  85. DOWNLOAD_COMMAND ""
  86. CMAKE_GENERATOR ${gen}
  87. SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/Utilities/${proj}
  88. CMAKE_ARGS
  89. ${ep_common_args}
  90. -DDCMTK_BUILD_APPS:BOOL=ON # Build also dmctk tools (movescu, storescp, ...)
  91. )
  92. SET(CTK_DCMTK_DIR ${ep_install_dir})
  93. ENDIF()
  94. #-----------------------------------------------------------------------------
  95. # Utilities/ZMQ
  96. #
  97. SET(proj ZMQ)
  98. ExternalProject_Add(${proj}
  99. DOWNLOAD_COMMAND ""
  100. INSTALL_COMMAND ""
  101. CMAKE_GENERATOR ${gen}
  102. SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/Utilities/ZMQ
  103. CMAKE_ARGS
  104. ${ep_common_args}
  105. )
  106. #-----------------------------------------------------------------------------
  107. # Utilities/OpenIGTLink
  108. #
  109. SET(proj OpenIGTLink)
  110. ExternalProject_Add(${proj}
  111. SVN_REPOSITORY "http://svn.na-mic.org/NAMICSandBox/trunk/OpenIGTLink"
  112. INSTALL_COMMAND ""
  113. CMAKE_GENERATOR ${gen}
  114. SOURCE_DIR OpenIGTLink
  115. CMAKE_ARGS
  116. ${ep_common_args}
  117. )
  118. #-----------------------------------------------------------------------------
  119. # XIP
  120. #
  121. # SET(proj XIP)
  122. # SET(url https://collab01a.scr.siemens.com/svn/xip/releases/latest)
  123. # ExternalProject_Add(${proj}
  124. # DOWNLOAD_COMMAND "${CMAKE_COMMAND} -E ${SVNCOMMAND} checkout ${url} ${ep_source_dir}/${proj} --username=anonymous "
  125. # UPDATE_COMMAND ""
  126. # #SVN_REPOSITORY "https://anonymous@collab01a.scr.siemens.com/svn/xip/releases/latest"
  127. # INSTALL_COMMAND ""
  128. # CMAKE_GENERATOR ${gen}
  129. # CMAKE_ARGS
  130. # ${ep_common_args}
  131. # )
  132. #-----------------------------------------------------------------------------
  133. # CTK Utilities
  134. #
  135. set(proj CTK-Utilities)
  136. ExternalProject_Add(${proj}
  137. DOWNLOAD_COMMAND ""
  138. CONFIGURE_COMMAND ""
  139. BUILD_COMMAND ""
  140. INSTALL_COMMAND ""
  141. DEPENDS
  142. ${kwstyle_DEPENDS}
  143. ${DCMTK_DEPENDS}
  144. ${PythonQt_DEPENDS}
  145. "ZMQ"
  146. "OpenIGTLink"
  147. # "XIP"
  148. )
  149. #-----------------------------------------------------------------------------
  150. # Convenient macro allowing to define superbuild arg
  151. #
  152. MACRO(ctk_set_superbuild_boolean_arg ctk_cmake_var)
  153. SET(superbuild_${ctk_cmake_var} ON)
  154. IF(DEFINED ${ctk_cmake_var} AND NOT ${ctk_cmake_var})
  155. SET(superbuild_${ctk_cmake_var} OFF)
  156. ENDIF()
  157. SET(superbuild_ep_arg_${ctk_cmake_var} -D${ctk_cmake_arg}:BOOL=${superbuild_${ctk_cmake_var}})
  158. ENDMACRO()
  159. #-----------------------------------------------------------------------------
  160. # Set superbuild boolean args
  161. #
  162. SET(ctk_cmake_boolean_args
  163. BUILD_TESTING
  164. CTK_USE_KWSTYLE
  165. ${ctk_libs}
  166. )
  167. SET(ctk_superbuild_boolean_args)
  168. FOREACH(ctk_cmake_arg ${ctk_cmake_boolean_args})
  169. ctk_set_superbuild_boolean_arg(${ctk_cmake_arg})
  170. LIST(APPEND ctk_superbuild_boolean_args -D${ctk_cmake_arg}:BOOL=${superbuild_${ctk_cmake_arg}})
  171. ENDFOREACH()
  172. #-----------------------------------------------------------------------------
  173. # CTK Configure
  174. #
  175. SET(proj CTK-Configure)
  176. ExternalProject_Add(${proj}
  177. DOWNLOAD_COMMAND ""
  178. CMAKE_GENERATOR ${gen}
  179. CMAKE_ARGS
  180. ${ctk_superbuild_boolean_args}
  181. -DCTK_SUPERBUILD:BOOL=OFF
  182. -DCMAKE_INSTALL_PREFIX:PATH=${ep_install_dir}
  183. -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}
  184. -DCTK_QMAKE_EXECUTABLE:FILEPATH=${CTK_QMAKE_EXECUTABLE}
  185. -DCTK_KWSTYLE_EXECUTABLE:FILEPATH=${CTK_KWSTYLE_EXECUTABLE}
  186. -DDCMTK_DIR=${CTK_DCMTK_DIR} # FindDCMTK expects DCMTK_DIR
  187. SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}
  188. BINARY_DIR ${CMAKE_BINARY_DIR}/CTK-build
  189. BUILD_COMMAND ""
  190. INSTALL_COMMAND ""
  191. DEPENDS
  192. "CTK-Utilities"
  193. )
  194. #-----------------------------------------------------------------------------
  195. # CTK
  196. #
  197. set(proj CTK-build)
  198. ExternalProject_Add(${proj}
  199. DOWNLOAD_COMMAND ""
  200. CMAKE_GENERATOR ${gen}
  201. SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}
  202. BINARY_DIR CTK-build
  203. #BUILD_COMMAND ""
  204. INSTALL_COMMAND ""
  205. DEPENDS
  206. "CTK-Configure"
  207. )