소스 검색

Fix ctkSimplePythonShell build error supporting optional dependencies

This commit fix the build error and simplify how optional dependencies
associated with ctkSimplePythonShell are specified.

Since the 'target_libraries.cmake' file doesn't support the specification
of optional dependency. We introduce the variable <targetname>_OPTIONAL_DEPENDENCIES
that has to be set before the generation of DGraph input or build options
validation.

This variable allows to specify optional dependencies that will be
considered by both ctkFunctionGetIncludeDirs and ctkFunctionGetTargetLibraries.
Jean-Christophe Fillion-Robin 11 년 전
부모
커밋
3facf6a27e
4개의 변경된 파일14개의 추가작업 그리고 26개의 파일을 삭제
  1. 0 26
      Applications/ctkSimplePythonShell/CMakeLists.txt
  2. 3 0
      CMake/ctkFunctionGenerateDGraphInput.cmake
  3. 6 0
      CMake/ctkMacroTargetLibraries.cmake
  4. 5 0
      CMakeLists.txt

+ 0 - 26
Applications/ctkSimplePythonShell/CMakeLists.txt

@@ -1,14 +1,6 @@
 project(ctkSimplePythonShell)
 
 #
-# 3rd party dependencies
-#
-if(CTK_LIB_Scripting/Python/Core AND CTK_LIB_Scripting/Python/Core_PYTHONQT_USE_VTK)
-  find_package(VTK REQUIRED)
-  include(${VTK_USE_FILE})
-endif()
-
-#
 # See CTK/CMake/ctkMacroBuildApp.cmake for details
 #
 
@@ -57,30 +49,13 @@ set(KIT_UI_FORMS
 set(KIT_resources
   )
 
-set(KIT_INCLUDE_DIRECTORIES
-  )
-
 set(VTK_LIBRARIES
   )
 
-if(CTK_LIB_Scripting/Python/Core AND CTK_LIB_Scripting/Python/Core_PYTHONQT_USE_VTK)
-  list(APPEND KIT_INCLUDE_DIRECTORIES
-    ${CTKVisualizationVTKCore_BINARY_DIR}
-    ${CTKVisualizationVTKCore_SOURCE_DIR}
-    )
-endif()
-
 # Target libraries - See CMake/ctkFunctionGetTargetLibraries.cmake
 # The following macro will read the target libraries from the file 'target_libraries.cmake'
 ctkFunctionGetTargetLibraries(KIT_target_libraries)
 
-if(CTK_LIB_Scripting/Python/Core AND CTK_LIB_Scripting/Python/Core_PYTHONQT_USE_VTK)
-  list(APPEND KIT_target_libraries
-    CTKVisualizationVTKCore
-    vtkFiltering
-    )
-endif()
-
 # Configure file will be configured using CTK_WRAP_PYTHONQT_LIGHT and
 # CTK_BUILD_SHARED_LIBS variables
 configure_file(
@@ -139,7 +114,6 @@ ctkMacroBuildApp(
   SRCS ${KIT_SRCS}
   MOC_SRCS ${KIT_MOC_SRCS}
   UI_FORMS ${KIT_UI_FORMS}
-  INCLUDE_DIRECTORIES ${KIT_INCLUDE_DIRECTORIES}
   TARGET_LIBRARIES ${KIT_target_libraries}
   RESOURCES ${KIT_resources}
   )

+ 3 - 0
CMake/ctkFunctionGenerateDGraphInput.cmake

@@ -76,6 +76,9 @@ function(ctkFunctionGenerateDGraphInput dir target_directories)
 
       # get dependencies
       ctkFunctionCollectTargetLibraryNames(${target_dir} dependencies)
+      if(${target_project_name}_OPTIONAL_DEPENDENCIES)
+        list(APPEND dependencies ${${target_project_name}_OPTIONAL_DEPENDENCIES})
+      endif()
 
       # Make sure the variable is cleared
       set(ctk_dependencies)

+ 6 - 0
CMake/ctkMacroTargetLibraries.cmake

@@ -32,8 +32,10 @@ function(ctkFunctionGetTargetLibraries varname)
   set(expanded_target_library_list)
 
   set(TARGET_DIRECTORY ${ARGV1})
+  set(_target_name )
   if("${TARGET_DIRECTORY}" STREQUAL "")
     set(TARGET_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
+    set(_target_name ${PROJECT_NAME})
   endif()
 
   set(filepath ${TARGET_DIRECTORY}/target_libraries.cmake)
@@ -59,6 +61,10 @@ function(ctkFunctionGetTargetLibraries varname)
 
     include(${filepath})
 
+    if(_target_name)
+      list(APPEND target_libraries "${${_target_name}_OPTIONAL_DEPENDENCIES}")
+    endif()
+
     # Loop over all target library, if it does *NOT* start with "CTK",
     # let's resolve the variable to access its content
     foreach(target_library ${target_libraries})

+ 5 - 0
CMakeLists.txt

@@ -812,6 +812,11 @@ find_program(DGraph_EXECUTABLE DGraph
   "${CTK_BINARY_DIR}/Utilities/DGraph/Release/")
 mark_as_advanced(DGraph_EXECUTABLE)
 
+# Set optional dependencies not captured in 'target_libraries.cmake' files.
+if(CTK_LIB_Scripting/Python/Core AND CTK_LIB_Scripting/Python/Core_PYTHONQT_USE_VTK)
+  set(ctkSimplePythonShell_OPTIONAL_DEPENDENCIES CTKVisualizationVTKCore VTK_LIBRARIES)
+endif()
+
 #-----------------------------------------------------------------------------
 # Let's make sure the enabled/disabled libraries, plugins or applications are coherent
 #