Browse Source

Remove duplicates from the include dirs

Having duplicates dramatically increase the command line arguments
that can become close to the maximum limit with ITK and VTK.
Julien Finet 11 years ago
parent
commit
6cc69969b3
2 changed files with 17 additions and 7 deletions
  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.
 # 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.
   # 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)
   if (NOT DEFINED QT_QMAKE_EXECUTABLE)
     set(QT_QMAKE_EXECUTABLE ${CTK_QT_QMAKE_EXECUTABLE})
     set(QT_QMAKE_EXECUTABLE ${CTK_QT_QMAKE_EXECUTABLE})
   endif()
   endif()
 
 
-ENDIF()
+endif()

+ 9 - 3
CMake/ctkMacroBuildLib.cmake

@@ -170,9 +170,15 @@ macro(ctkMacroBuildLib)
   target_link_libraries(${lib_name} ${my_libs})
   target_link_libraries(${lib_name} ${my_libs})
 
 
   # Update CTK_BASE_LIBRARIES
   # 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
   # Install headers
   file(GLOB headers "${CMAKE_CURRENT_SOURCE_DIR}/*.h" "${CMAKE_CURRENT_SOURCE_DIR}/*.tpp")
   file(GLOB headers "${CMAKE_CURRENT_SOURCE_DIR}/*.h" "${CMAKE_CURRENT_SOURCE_DIR}/*.tpp")