SuperBuild.cmake 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  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_parallelism_level)
  18. SET(ep_build_shared_libs ON)
  19. SET(ep_build_testing OFF)
  20. SET(ep_common_args
  21. -DCMAKE_INSTALL_PREFIX:PATH=${ep_install_dir}
  22. -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}
  23. -DBUILD_TESTING:BOOL=${ep_build_testing}
  24. )
  25. # Compute -G arg for configuring external projects with the same CMake generator:
  26. IF(CMAKE_EXTRA_GENERATOR)
  27. SET(gen "${CMAKE_EXTRA_GENERATOR} - ${CMAKE_GENERATOR}")
  28. ELSE()
  29. SET(gen "${CMAKE_GENERATOR}")
  30. ENDIF()
  31. # Use this value where semi-colons are needed in ep_add args:
  32. set(sep "^^")
  33. #-----------------------------------------------------------------------------
  34. # Update CMake module path
  35. #
  36. SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/CMake)
  37. #-----------------------------------------------------------------------------
  38. # Qt is expected to be setup by CTK/CMakeLists.txt just before it includes the SuperBuild script
  39. #
  40. #-----------------------------------------------------------------------------
  41. # KWStyle
  42. #
  43. SET (kwstyle_DEPENDS)
  44. IF (CTK_USE_KWSTYLE)
  45. IF (NOT DEFINED CTK_KWSTYLE_EXECUTABLE)
  46. SET(proj KWStyle-CVSHEAD)
  47. SET(kwstyle_DEPENDS ${proj})
  48. ExternalProject_Add(${proj}
  49. LIST_SEPARATOR ${sep}
  50. CVS_REPOSITORY ":pserver:anoncvs:@public.kitware.com:/cvsroot/KWStyle"
  51. CVS_MODULE "KWStyle"
  52. CMAKE_GENERATOR ${gen}
  53. CMAKE_ARGS
  54. ${ep_common_args}
  55. )
  56. SET(CTK_KWSTYLE_EXECUTABLE ${ep_install_dir}/bin/KWStyle)
  57. ENDIF()
  58. ENDIF()
  59. #-----------------------------------------------------------------------------
  60. # Utilities/DCMTK
  61. #
  62. SET (DCMTK_DEPENDS)
  63. IF (NOT DEFINED CTK_DCMTK_DIR)
  64. SET(proj DCMTK)
  65. SET(DCMTK_DEPENDS ${proj})
  66. ExternalProject_Add(${proj}
  67. DOWNLOAD_COMMAND ""
  68. CMAKE_GENERATOR ${gen}
  69. SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/Utilities/${proj}
  70. CMAKE_ARGS
  71. ${ep_common_args}
  72. -DDCMTK_BUILD_APPS:BOOL=ON # Build also dmctk tools (movescu, storescp, ...)
  73. )
  74. SET(CTK_DCMTK_DIR ${ep_install_dir})
  75. ENDIF()
  76. #-----------------------------------------------------------------------------
  77. # Utilities/ZMQ
  78. #
  79. SET(proj ZMQ)
  80. ExternalProject_Add(${proj}
  81. DOWNLOAD_COMMAND ""
  82. INSTALL_COMMAND ""
  83. CMAKE_GENERATOR ${gen}
  84. SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/Utilities/ZMQ
  85. CMAKE_ARGS
  86. ${ep_common_args}
  87. )
  88. #-----------------------------------------------------------------------------
  89. # Utilities/OpenIGTLink
  90. #
  91. SET(proj OpenIGTLink)
  92. ExternalProject_Add(${proj}
  93. SVN_REPOSITORY "http://svn.na-mic.org/NAMICSandBox/trunk/OpenIGTLink"
  94. INSTALL_COMMAND ""
  95. CMAKE_GENERATOR ${gen}
  96. SOURCE_DIR OpenIGTLink
  97. CMAKE_ARGS
  98. ${ep_common_args}
  99. )
  100. #-----------------------------------------------------------------------------
  101. # CTK Utilities
  102. #
  103. set(proj CTK-Utilities)
  104. ExternalProject_Add(${proj}
  105. DOWNLOAD_COMMAND ""
  106. CONFIGURE_COMMAND ""
  107. BUILD_COMMAND ""
  108. INSTALL_COMMAND ""
  109. DEPENDS
  110. ${kwstyle_DEPENDS}
  111. ${DCMTK_DEPENDS}
  112. "ZMQ"
  113. "OpenIGTLink"
  114. )
  115. #-----------------------------------------------------------------------------
  116. # Convenient macro allowing to define superbuild arg
  117. #
  118. MACRO(ctk_set_superbuild_boolean_arg ctk_cmake_var)
  119. SET(superbuild_${ctk_cmake_var} ON)
  120. IF(DEFINED ${ctk_cmake_var} AND NOT ${ctk_cmake_var})
  121. SET(superbuild_${ctk_cmake_var} OFF)
  122. ENDIF()
  123. SET(superbuild_ep_arg_${ctk_cmake_var} -D${ctk_cmake_arg}:BOOL=${superbuild_${ctk_cmake_var}})
  124. ENDMACRO()
  125. #-----------------------------------------------------------------------------
  126. # Set superbuild boolean args
  127. #
  128. SET(ctk_cmake_boolean_args
  129. BUILD_TESTING
  130. CTK_USE_KWSTYLE
  131. ${ctk_libs}
  132. )
  133. SET(ctk_superbuild_boolean_args)
  134. FOREACH(ctk_cmake_arg ${ctk_cmake_boolean_args})
  135. ctk_set_superbuild_boolean_arg(${ctk_cmake_arg})
  136. LIST(APPEND ctk_superbuild_boolean_args -D${ctk_cmake_arg}:BOOL=${superbuild_${ctk_cmake_arg}})
  137. ENDFOREACH()
  138. #-----------------------------------------------------------------------------
  139. # CTK Configure
  140. #
  141. SET(proj CTK-Configure)
  142. ExternalProject_Add(${proj}
  143. DOWNLOAD_COMMAND ""
  144. CMAKE_GENERATOR ${gen}
  145. CMAKE_ARGS
  146. ${ctk_superbuild_boolean_args}
  147. -DCTK_SUPERBUILD:BOOL=OFF
  148. -DCMAKE_INSTALL_PREFIX:PATH=${ep_install_dir}
  149. -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}
  150. -DCTK_QMAKE_EXECUTABLE:FILEPATH=${CTK_QMAKE_EXECUTABLE}
  151. -DCTK_KWSTYLE_EXECUTABLE:FILEPATH=${CTK_KWSTYLE_EXECUTABLE}
  152. -DDCMTK_DIR=${CTK_DCMTK_DIR} # FindDCMTK expects DCMTK_DIR
  153. SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}
  154. BINARY_DIR ${CMAKE_BINARY_DIR}/CTK-build
  155. BUILD_COMMAND ""
  156. INSTALL_COMMAND ""
  157. DEPENDS
  158. "CTK-Utilities"
  159. )
  160. #-----------------------------------------------------------------------------
  161. # CTK
  162. #
  163. set(proj CTK-build)
  164. ExternalProject_Add(${proj}
  165. DOWNLOAD_COMMAND ""
  166. CMAKE_GENERATOR ${gen}
  167. SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}
  168. BINARY_DIR CTK-build
  169. #BUILD_COMMAND ""
  170. INSTALL_COMMAND ""
  171. DEPENDS
  172. "CTK-Configure"
  173. )