瀏覽代碼

ENH: In SuperBuild.cmake, to improve readability and maintainability, factored out the external project includes

Jean-Christophe Fillion-Robin 15 年之前
父節點
當前提交
da0ba394c1

+ 21 - 0
CMakeExternals/DCMTK.cmake

@@ -0,0 +1,21 @@
+#
+# DCMTK
+#
+SET(DCMTK_DEPENDS)
+ctkMacroShouldAddExternalProject(DCMTK_LIBRARIES add_project)
+IF(${add_project})
+  IF(NOT DEFINED DCMTK_DIR)
+    SET(proj DCMTK)
+#     MESSAGE(STATUS "Adding project:${proj}")
+    SET(DCMTK_DEPENDS ${proj})
+    ExternalProject_Add(${proj}
+        DOWNLOAD_COMMAND ""
+        CMAKE_GENERATOR ${gen}
+        SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/Utilities/${proj}
+        CMAKE_ARGS
+          ${ep_common_args}
+          -DDCMTK_BUILD_APPS:BOOL=ON # Build also dmctk tools (movescu, storescp, ...)
+        )
+    SET(DCMTK_DIR ${ep_install_dir})
+  ENDIF()
+ENDIF()

+ 19 - 0
CMakeExternals/KWStyle.cmake

@@ -0,0 +1,19 @@
+#
+# KWStyle
+#
+SET(kwstyle_DEPENDS)
+IF(CTK_USE_KWSTYLE)
+  IF(NOT DEFINED CTK_KWSTYLE_EXECUTABLE)
+    SET(proj KWStyle-CVSHEAD)
+    SET(kwstyle_DEPENDS ${proj})
+    ExternalProject_Add(${proj}
+      LIST_SEPARATOR ${sep}
+      CVS_REPOSITORY ":pserver:anoncvs:@public.kitware.com:/cvsroot/KWStyle"
+      CVS_MODULE "KWStyle"
+      CMAKE_GENERATOR ${gen}
+      CMAKE_ARGS
+        ${ep_common_args}
+      )
+    SET(CTK_KWSTYLE_EXECUTABLE ${ep_install_dir}/bin/KWStyle)
+  ENDIF()
+ENDIF()

+ 20 - 0
CMakeExternals/OpenIGTLink.cmake

@@ -0,0 +1,20 @@
+#
+# OpenIGTLink
+#
+SET (OpenIGTLink_DEPENDS)
+ctkMacroShouldAddExternalProject(OpenIGTLink_LIBRARIES add_project)
+IF(${add_project})
+  IF(NOT DEFINED OpenIGTLink_DIR)
+    SET(proj OpenIGTLink)
+  #   MESSAGE(STATUS "Adding project:${proj}")
+    SET(OpenIGTLink_DEPENDS ${proj})
+    ExternalProject_Add(${proj}
+        SVN_REPOSITORY "http://svn.na-mic.org/NAMICSandBox/trunk/OpenIGTLink"
+        INSTALL_COMMAND ""
+        CMAKE_GENERATOR ${gen}
+        CMAKE_ARGS
+          ${ep_common_args}
+        )
+    SET(OpenIGTLink_DIR ${ep_build_dir}/${proj})
+  ENDIF()
+ENDIF()

+ 41 - 0
CMakeExternals/PythonQt.cmake

@@ -0,0 +1,41 @@
+#
+# PythonQt
+#
+SET(PythonQt_DEPENDS)
+ctkMacroShouldAddExternalProject(PYTHONQT_LIBRARIES add_project)
+IF(${add_project})
+  IF(NOT DEFINED PYTHONQT_INSTALL_DIR)
+    SET(proj PythonQt)
+  #   MESSAGE(STATUS "Adding project:${proj}")
+    SET(PythonQt_DEPENDS ${proj})
+
+    # Python is required
+    FIND_PACKAGE(PythonLibs)
+    IF(NOT PYTHONLIBS_FOUND)
+      MESSAGE(FATAL_ERROR "error: Python is required to build ${PROJECT_NAME}")
+    ENDIF()
+
+    # Configure patch script
+    SET(pythonqt_src_dir ${ep_source_dir}/${proj})
+    SET(pythonqt_patch_dir ${CTK_SOURCE_DIR}/Utilities/PythonQt/)
+    SET(pythonqt_configured_patch_dir ${CTK_BINARY_DIR}/Utilities/PythonQt/)
+    SET(pythonqt_patchscript
+      ${CTK_BINARY_DIR}/Utilities/PythonQt/PythonQt-trunk-patch.cmake)
+    CONFIGURE_FILE(
+      ${CTK_SOURCE_DIR}/Utilities/PythonQt/PythonQt-trunk-patch.cmake.in
+      ${pythonqt_patchscript} @ONLY)
+      
+    ExternalProject_Add(${proj}
+      SVN_REPOSITORY "http://pythonqt.svn.sourceforge.net/svnroot/pythonqt/trunk"
+      CMAKE_GENERATOR ${gen}
+      PATCH_COMMAND ${CMAKE_COMMAND} -P ${pythonqt_patchscript}
+      BUILD_COMMAND ""
+      CMAKE_ARGS
+        ${ep_common_args}
+        -DQT_QMAKE_EXECUTABLE:FILEPATH=${QT_QMAKE_EXECUTABLE}
+        -DPYTHON_INCLUDE_DIR:PATH=${PYTHON_INCLUDE_DIR}
+        -DPYTHON_LIBRARY:FILEPATH=${PYTHON_LIBRARY}
+      )
+    SET(PYTHONQT_INSTALL_DIR ${ep_install_dir})
+  ENDIF()
+ENDIF()

+ 47 - 0
CMakeExternals/QtMobility.cmake

@@ -0,0 +1,47 @@
+#
+# QtMobility
+#
+SET(QtMobility_DEPENDS)
+ctkMacroShouldAddExternalProject(QTMOBILITY_QTSERVICEFW_LIBRARIES add_project)
+IF(${add_project})
+  SET(proj QtMobility)
+#   MESSAGE(STATUS "Adding project:${proj}")
+  SET(QtMobility_DEPENDS ${proj})
+  
+  # Configure patch script
+  SET(qtmobility_src_dir ${ep_source_dir}/${proj})
+  SET(qtmobility_patch_dir ${CTK_SOURCE_DIR}/Utilities/QtMobility/)
+  SET(qtmobility_configured_patch_dir ${CTK_BINARY_DIR}/Utilities/QtMobility/)
+  SET(qtmobility_patchscript
+    ${CTK_BINARY_DIR}/Utilities/QtMobility/QtMobility-1.0.0-patch.cmake)
+  CONFIGURE_FILE(
+    ${CTK_SOURCE_DIR}/Utilities/QtMobility/QtMobility-1.0.0-patch.cmake.in
+    ${qtmobility_patchscript} @ONLY)
+
+  # Define configure options
+  SET(qtmobility_modules "serviceframework")
+  SET(qtmobility_build_type "release")
+  IF(UNIX)
+    IF(CMAKE_BUILD_TYPE STREQUAL "Debug")
+      SET(qtmobility_build_type "debug")
+    ENDIF()
+  ELSEIF(NOT ${CMAKE_CFG_INTDIR} STREQUAL "Release")
+    SET(qtmobility_build_type "debug")
+  ENDIf()
+  
+  SET(qtmobility_make_cmd)
+  IF(UNIX OR MINGW)
+    SET(qtmobility_make_cmd make)
+  ELSEIF(WIN32)
+    SET(qtmobility_make_cmd nmake)
+  ENDIF()
+
+  ExternalProject_Add(${proj}
+    URL ${CTK_SOURCE_DIR}/Utilities/QtMobility/qt-mobility-servicefw-opensource-src-1.0.0.tar.gz
+    PATCH_COMMAND ${CMAKE_COMMAND} -P ${qtmobility_patchscript}
+    CONFIGURE_COMMAND <SOURCE_DIR>/configure -${qtmobility_build_type} -libdir ${CMAKE_BINARY_DIR}/CTK-build/bin -no-docs -modules ${qtmobility_modules}
+    BUILD_COMMAND ${qtmobility_make_cmd}
+    INSTALL_COMMAND ${qtmobility_make_cmd} install
+    BUILD_IN_SOURCE 1
+    )
+ENDIF()

+ 29 - 0
CMakeExternals/VTK.cmake

@@ -0,0 +1,29 @@
+#
+# VTK
+#
+SET (VTK_DEPENDS)
+ctkMacroShouldAddExternalProject(VTK_LIBRARIES add_project)
+IF(${add_project})
+  IF(NOT DEFINED VTK_DIR)
+    SET(proj VTK)
+#     MESSAGE(STATUS "Adding project:${proj}")
+    SET(VTK_DEPENDS ${proj})
+    ExternalProject_Add(${proj}
+      GIT_REPOSITORY git://vtk.org/VTK.git
+      INSTALL_COMMAND ""
+      CMAKE_GENERATOR ${gen}
+      CMAKE_ARGS
+        ${ep_common_args}
+        -DVTK_WRAP_TCL:BOOL=OFF
+        -DVTK_WRAP_PYTHON:BOOL=OFF
+        -DVTK_WRAP_JAVA:BOOL=OFF
+        -DBUILD_SHARED_LIBS:BOOL=ON 
+        -DDESIRED_QT_VERSION:STRING=4
+        -DVTK_USE_GUISUPPORT:BOOL=ON
+        -DVTK_USE_QVTK_QTOPENGL:BOOL=ON
+        -DVTK_USE_QT:BOOL=ON
+        -DQT_QMAKE_EXECUTABLE:FILEPATH=${QT_QMAKE_EXECUTABLE}
+      )
+    SET(VTK_DIR ${ep_build_dir}/${proj})
+  ENDIF()
+ENDIF()

+ 18 - 0
CMakeExternals/XIP.cmake

@@ -0,0 +1,18 @@
+#
+# XIP
+#
+SET (XIP_DEPENDS)
+ctkMacroShouldAddExternalProject(XIP_LIBRARIES add_project)
+IF(${add_project})
+  SET(proj XIP)
+#   MESSAGE(STATUS "Adding project:${proj}")
+  SET(XIP_DEPENDS ${proj})
+  ExternalProject_Add(${proj}
+    SVN_REPOSITORY "https://collab01a.scr.siemens.com/svn/xip/releases/latest"
+    SVN_USERNAME "anonymous"
+    INSTALL_COMMAND ""
+    CMAKE_GENERATOR ${gen}
+    CMAKE_ARGS
+      ${ep_common_args}
+    )
+ENDIF()

+ 18 - 0
CMakeExternals/ZMQ.cmake

@@ -0,0 +1,18 @@
+#
+# ZMQ
+#
+SET(ZMQ_DEPENDS)
+ctkMacroShouldAddExternalProject(ZMQ_LIBRARIES add_project)
+IF(${add_project})
+  SET(proj ZMQ)
+#   MESSAGE(STATUS "Adding project:${proj}")
+  SET(ZMQ_DEPENDS ${proj})
+  ExternalProject_Add(${proj}
+      DOWNLOAD_COMMAND ""
+      INSTALL_COMMAND ""
+      CMAKE_GENERATOR ${gen}
+      SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/Utilities/ZMQ
+      CMAKE_ARGS
+        ${ep_common_args}
+      )
+ENDIF()

+ 16 - 218
SuperBuild.cmake

@@ -72,225 +72,23 @@ ctkMacroGetAllNonCTKTargetLibraries("${ALL_TARGET_LIBRARIES}" NON_CTK_DEPENDENCI
 #
 
 #-----------------------------------------------------------------------------
-# KWStyle
-#
-SET(kwstyle_DEPENDS)
-IF(CTK_USE_KWSTYLE)
-  IF(NOT DEFINED CTK_KWSTYLE_EXECUTABLE)
-    SET(proj KWStyle-CVSHEAD)
-    SET(kwstyle_DEPENDS ${proj})
-    ExternalProject_Add(${proj}
-      LIST_SEPARATOR ${sep}
-      CVS_REPOSITORY ":pserver:anoncvs:@public.kitware.com:/cvsroot/KWStyle"
-      CVS_MODULE "KWStyle"
-      CMAKE_GENERATOR ${gen}
-      CMAKE_ARGS
-        ${ep_common_args}
-      )
-    SET(CTK_KWSTYLE_EXECUTABLE ${ep_install_dir}/bin/KWStyle)
-  ENDIF()
-ENDIF()
-
-#-----------------------------------------------------------------------------
-# PythonQt
-#
-SET(PythonQt_DEPENDS)
-ctkMacroShouldAddExternalProject(PYTHONQT_LIBRARIES add_project)
-IF(${add_project})
-  IF(NOT DEFINED PYTHONQT_INSTALL_DIR)
-    SET(proj PythonQt)
-  #   MESSAGE(STATUS "Adding project:${proj}")
-    SET(PythonQt_DEPENDS ${proj})
-
-    # Python is required
-    FIND_PACKAGE(PythonLibs)
-    IF(NOT PYTHONLIBS_FOUND)
-      MESSAGE(FATAL_ERROR "error: Python is required to build ${PROJECT_NAME}")
-    ENDIF()
-
-    # Configure patch script
-    SET(pythonqt_src_dir ${ep_source_dir}/${proj})
-    SET(pythonqt_patch_dir ${CTK_SOURCE_DIR}/Utilities/PythonQt/)
-    SET(pythonqt_configured_patch_dir ${CTK_BINARY_DIR}/Utilities/PythonQt/)
-    SET(pythonqt_patchscript
-      ${CTK_BINARY_DIR}/Utilities/PythonQt/PythonQt-trunk-patch.cmake)
-    CONFIGURE_FILE(
-      ${CTK_SOURCE_DIR}/Utilities/PythonQt/PythonQt-trunk-patch.cmake.in
-      ${pythonqt_patchscript} @ONLY)
-      
-    ExternalProject_Add(${proj}
-      SVN_REPOSITORY "http://pythonqt.svn.sourceforge.net/svnroot/pythonqt/trunk"
-      CMAKE_GENERATOR ${gen}
-      PATCH_COMMAND ${CMAKE_COMMAND} -P ${pythonqt_patchscript}
-      BUILD_COMMAND ""
-      CMAKE_ARGS
-        ${ep_common_args}
-        -DQT_QMAKE_EXECUTABLE:FILEPATH=${QT_QMAKE_EXECUTABLE}
-        -DPYTHON_INCLUDE_DIR:PATH=${PYTHON_INCLUDE_DIR}
-        -DPYTHON_LIBRARY:FILEPATH=${PYTHON_LIBRARY}
-      )
-    SET(PYTHONQT_INSTALL_DIR ${ep_install_dir})
-  ENDIF()
-ENDIF()
-    
-#-----------------------------------------------------------------------------
-# Utilities/DCMTK
-#
-SET(DCMTK_DEPENDS)
-ctkMacroShouldAddExternalProject(DCMTK_LIBRARIES add_project)
-IF(${add_project})
-  IF(NOT DEFINED DCMTK_DIR)
-    SET(proj DCMTK)
-#     MESSAGE(STATUS "Adding project:${proj}")
-    SET(DCMTK_DEPENDS ${proj})
-    ExternalProject_Add(${proj}
-        DOWNLOAD_COMMAND ""
-        CMAKE_GENERATOR ${gen}
-        SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/Utilities/${proj}
-        CMAKE_ARGS
-          ${ep_common_args}
-          -DDCMTK_BUILD_APPS:BOOL=ON # Build also dmctk tools (movescu, storescp, ...)
-        )
-    SET(DCMTK_DIR ${ep_install_dir})
-  ENDIF()
-ENDIF()
-
-#-----------------------------------------------------------------------------
-# Utilities/ZMQ
-#
-SET(ZMQ_DEPENDS)
-ctkMacroShouldAddExternalProject(ZMQ_LIBRARIES add_project)
-IF(${add_project})
-  SET(proj ZMQ)
-#   MESSAGE(STATUS "Adding project:${proj}")
-  SET(ZMQ_DEPENDS ${proj})
-  ExternalProject_Add(${proj}
-      DOWNLOAD_COMMAND ""
-      INSTALL_COMMAND ""
-      CMAKE_GENERATOR ${gen}
-      SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/Utilities/ZMQ
-      CMAKE_ARGS
-        ${ep_common_args}
-      )
-ENDIF()
-
-#-----------------------------------------------------------------------------
-# QtMobility
-#
-SET(QtMobility_DEPENDS)
-ctkMacroShouldAddExternalProject(QTMOBILITY_QTSERVICEFW_LIBRARIES add_project)
-IF(${add_project})
-  SET(proj QtMobility)
-#   MESSAGE(STATUS "Adding project:${proj}")
-  SET(QtMobility_DEPENDS ${proj})
-  
-  # Configure patch script
-  SET(qtmobility_src_dir ${ep_source_dir}/${proj})
-  SET(qtmobility_patch_dir ${CTK_SOURCE_DIR}/Utilities/QtMobility/)
-  SET(qtmobility_configured_patch_dir ${CTK_BINARY_DIR}/Utilities/QtMobility/)
-  SET(qtmobility_patchscript
-    ${CTK_BINARY_DIR}/Utilities/QtMobility/QtMobility-1.0.0-patch.cmake)
-  CONFIGURE_FILE(
-    ${CTK_SOURCE_DIR}/Utilities/QtMobility/QtMobility-1.0.0-patch.cmake.in
-    ${qtmobility_patchscript} @ONLY)
-
-  # Define configure options
-  SET(qtmobility_modules "serviceframework")
-  SET(qtmobility_build_type "release")
-  IF(UNIX)
-    IF(CMAKE_BUILD_TYPE STREQUAL "Debug")
-      SET(qtmobility_build_type "debug")
-    ENDIF()
-  ELSEIF(NOT ${CMAKE_CFG_INTDIR} STREQUAL "Release")
-    SET(qtmobility_build_type "debug")
-  ENDIf()
-  
-  SET(qtmobility_make_cmd)
-  IF(UNIX OR MINGW)
-    SET(qtmobility_make_cmd make)
-  ELSEIF(WIN32)
-    SET(qtmobility_make_cmd nmake)
-  ENDIF()
-
-  ExternalProject_Add(${proj}
-    URL ${CTK_SOURCE_DIR}/Utilities/QtMobility/qt-mobility-servicefw-opensource-src-1.0.0.tar.gz
-    PATCH_COMMAND ${CMAKE_COMMAND} -P ${qtmobility_patchscript}
-    CONFIGURE_COMMAND <SOURCE_DIR>/configure -${qtmobility_build_type} -libdir ${CMAKE_BINARY_DIR}/CTK-build/bin -no-docs -modules ${qtmobility_modules}
-    BUILD_COMMAND ${qtmobility_make_cmd}
-    INSTALL_COMMAND ${qtmobility_make_cmd} install
-    BUILD_IN_SOURCE 1
-    )
-ENDIF()
-
-#-----------------------------------------------------------------------------
-# Utilities/OpenIGTLink
-#
-SET (OpenIGTLink_DEPENDS)
-ctkMacroShouldAddExternalProject(OpenIGTLink_LIBRARIES add_project)
-IF(${add_project})
-  IF(NOT DEFINED OpenIGTLink_DIR)
-    SET(proj OpenIGTLink)
-  #   MESSAGE(STATUS "Adding project:${proj}")
-    SET(OpenIGTLink_DEPENDS ${proj})
-    ExternalProject_Add(${proj}
-        SVN_REPOSITORY "http://svn.na-mic.org/NAMICSandBox/trunk/OpenIGTLink"
-        INSTALL_COMMAND ""
-        CMAKE_GENERATOR ${gen}
-        CMAKE_ARGS
-          ${ep_common_args}
-        )
-    SET(OpenIGTLink_DIR ${ep_build_dir}/${proj})
-  ENDIF()
-ENDIF()
-
-#-----------------------------------------------------------------------------
-# VTK
-#
-SET (VTK_DEPENDS)
-ctkMacroShouldAddExternalProject(VTK_LIBRARIES add_project)
-IF(${add_project})
-  IF(NOT DEFINED VTK_DIR)
-    SET(proj VTK)
-#     MESSAGE(STATUS "Adding project:${proj}")
-    SET(VTK_DEPENDS ${proj})
-    ExternalProject_Add(${proj}
-      GIT_REPOSITORY git://vtk.org/VTK.git
-      INSTALL_COMMAND ""
-      CMAKE_GENERATOR ${gen}
-      CMAKE_ARGS
-        ${ep_common_args}
-        -DVTK_WRAP_TCL:BOOL=OFF
-        -DVTK_WRAP_PYTHON:BOOL=OFF
-        -DVTK_WRAP_JAVA:BOOL=OFF
-        -DBUILD_SHARED_LIBS:BOOL=ON 
-        -DDESIRED_QT_VERSION:STRING=4
-        -DVTK_USE_GUISUPPORT:BOOL=ON
-        -DVTK_USE_QVTK_QTOPENGL:BOOL=ON
-        -DVTK_USE_QT:BOOL=ON
-        -DQT_QMAKE_EXECUTABLE:FILEPATH=${QT_QMAKE_EXECUTABLE}
-      )
-    SET(VTK_DIR ${ep_build_dir}/${proj})
-  ENDIF()
-ENDIF()
+# ExternalProjects
+#
+SET(external_projects
+  KWStyle
+  PythonQt
+  DCMTK
+  ZMQ
+  QtMobility
+  OpenIGTLink
+  VTK
+  XIP
+  )
 
-#-----------------------------------------------------------------------------
-# XIP
-#
-SET (XIP_DEPENDS)
-ctkMacroShouldAddExternalProject(XIP_LIBRARIES add_project)
-IF(${add_project})
-  SET(proj XIP)
-#   MESSAGE(STATUS "Adding project:${proj}")
-  SET(XIP_DEPENDS ${proj})
-  ExternalProject_Add(${proj}
-    SVN_REPOSITORY "https://collab01a.scr.siemens.com/svn/xip/releases/latest"
-    SVN_USERNAME "anonymous"
-    INSTALL_COMMAND ""
-    CMAKE_GENERATOR ${gen}
-    CMAKE_ARGS
-      ${ep_common_args}
-    )
-ENDIF()
+# Include external projects
+FOREACH(p ${external_projects})
+  INCLUDE(CMakeExternals/${p}.cmake)
+ENDFOREACH()
    
 #-----------------------------------------------------------------------------
 # CTK Utilities