Pārlūkot izejas kodu

Merge branch 'remove-include-duplicates'

* remove-include-duplicates:
  Remove duplicates from the include dirs
Julien Finet 11 gadi atpakaļ
vecāks
revīzija
eda759b8f6
2 mainītis faili ar 17 papildinājumiem un 7 dzēšanām
  1. 8 4
      CMake/UseCTK.cmake.in
  2. 9 3
      CMake/ctkMacroBuildLib.cmake

+ 8 - 4
CMake/UseCTK.cmake.in

@@ -24,14 +24,18 @@
 # settings to use CTK.
 #
 
-IF(NOT CTK_USE_FILE_INCLUDED)
-  SET(CTK_USE_FILE_INCLUDED 1)
+if(NOT CTK_USE_FILE_INCLUDED)
+  set(CTK_USE_FILE_INCLUDED 1)
 
   # Add include directories needed to use CTK.
-  INCLUDE_DIRECTORIES(${CTK_INCLUDE_DIRS})
+  get_directory_property(includes INCLUDE_DIRECTORIES)
+  list(APPEND includes ${CTK_INCLUDE_DIRS})
+  # But don't add duplicated directories (e.g. VTK or ITK)
+  list(REMOVE_DUPLICATES includes)
+  set_directory_properties(INCLUDE_DIRECTORIES ${includes})
 
   if (NOT DEFINED QT_QMAKE_EXECUTABLE)
     set(QT_QMAKE_EXECUTABLE ${CTK_QT_QMAKE_EXECUTABLE})
   endif()
 
-ENDIF()
+endif()

+ 9 - 3
CMake/ctkMacroBuildLib.cmake

@@ -170,9 +170,15 @@ macro(ctkMacroBuildLib)
   target_link_libraries(${lib_name} ${my_libs})
 
   # Update CTK_BASE_LIBRARIES
-  set(CTK_BASE_LIBRARIES ${my_libs} ${lib_name} CACHE INTERNAL "CTK base libraries" FORCE)
-  set(CTK_LIBRARIES ${CTK_LIBRARIES} ${lib_name} CACHE INTERNAL "CTK libraries" FORCE)
-  set(CTK_BASE_INCLUDE_DIRS ${CTK_BASE_INCLUDE_DIRS} ${my_includes} CACHE INTERNAL "CTK includes" FORCE)
+  set(new_ctk_base_libraries ${my_libs} ${lib_name})
+  list(REMOVE_DUPLICATES new_ctk_base_libraries)
+  set(CTK_BASE_LIBRARIES ${new_ctk_base_libraries} CACHE INTERNAL "CTK base libraries" FORCE)
+  set(new_ctk_libraries ${CTK_LIBRARIES} ${lib_name})
+  list(REMOVE_DUPLICATES new_ctk_libraries)
+  set(CTK_LIBRARIES ${new_ctk_libraries} CACHE INTERNAL "CTK libraries" FORCE)
+  set(new_ctk_base_include_dirs ${CTK_BASE_INCLUDE_DIRS} ${my_includes})
+  list(REMOVE_DUPLICATES new_ctk_base_include_dirs)
+  set(CTK_BASE_INCLUDE_DIRS ${new_ctk_base_include_dirs} CACHE INTERNAL "CTK includes" FORCE)
 
   # Install headers
   file(GLOB headers "${CMAKE_CURRENT_SOURCE_DIR}/*.h" "${CMAKE_CURRENT_SOURCE_DIR}/*.tpp")