浏览代码

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 年之前
父节点
当前提交
6cc69969b3
共有 2 个文件被更改,包括 17 次插入7 次删除
  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")