Explorar el Código

ENH: Added macro ctkMacroEmptyExternalProject

When "external project" are passed to superbuild, ExternalProject_Add
wasn't call and the associated target wasn't created.

Using this macro, it's now possible to create a "empty project" with
the expected name and list of dependencies. Doing so allow
to maintain a valid dependency graph.
Jean-Christophe Fillion-Robin hace 14 años
padre
commit
9093e44d3c
Se han modificado 2 ficheros con 39 adiciones y 0 borrados
  1. 38 0
      CMake/ctkMacroEmptyExternalProject.cmake
  2. 1 0
      SuperBuild.cmake

+ 38 - 0
CMake/ctkMacroEmptyExternalProject.cmake

@@ -0,0 +1,38 @@
+###########################################################################
+#
+#  Library:   CTK
+# 
+#  Copyright (c) 2010  Kitware Inc.
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.commontk.org/LICENSE
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+# 
+###########################################################################
+
+#
+# Convenient macro allowing to define a "empty" project in case an external one is provided
+# using for example <proj>_DIR. 
+# Doing so allows to keep the external project dependency system happy.
+#
+MACRO(ctkMacroEmptyExternalProject proj dependencies)
+
+  ExternalProject_Add(${proj}
+    SOURCE_DIR ${CMAKE_BINARY_DIR}/${proj}
+    BINARY_DIR ${proj}-build
+    DOWNLOAD_COMMAND ""
+    CONFIGURE_COMMAND ""
+    BUILD_COMMAND ""
+    INSTALL_COMMAND ""
+    DEPENDS 
+      ${dependencies}
+    )
+ENDMACRO()

+ 1 - 0
SuperBuild.cmake

@@ -57,6 +57,7 @@ endif()
 # Enable and setup External project global properties
 #
 INCLUDE(ExternalProject)
+INCLUDE(ctkMacroEmptyExternalProject)
 
 SET(ep_base "${CMAKE_BINARY_DIR}/CMakeExternals")
 SET_PROPERTY(DIRECTORY PROPERTY EP_BASE ${ep_base})