Pārlūkot izejas kodu

Merge branch 'avoid-varname-in-dirs-variable'

* avoid-varname-in-dirs-variable:
  Do not append non-existent directory to "*_{INCLUDE,LIBRARY}_DIRS" variables
  Better verbose output for "*_{INCLUDE,LIBRARY}_DIRS" variables update
  Exclude variable name from *_{INCLUDE,LIBRARY}_DIRS variable
Jean-Christophe Fillion-Robin 11 gadi atpakaļ
vecāks
revīzija
dcf7db15f2
1 mainītis faili ar 36 papildinājumiem un 14 dzēšanām
  1. 36 14
      CMakeLists.txt

+ 36 - 14
CMakeLists.txt

@@ -876,31 +876,53 @@ foreach(_external_target ${EXTERNAL_TARGETS})
 endforeach()
 
 foreach(_external_target ${EXTERNAL_TARGETS})
+  set(_package_name ${${_external_target}_FIND_PACKAGE_CMD})
+  if("${_package_name}" STREQUAL "")
+    set(_package_name ${_external_target})
+  endif()
   if(${_external_target}_INCLUDE_DIRS)
-    #message("[${_external_target}] Resolving include variables: ${${_external_target}_INCLUDE_DIRS}")
+    #message("[${_package_name}] Resolving include variables: ${${_external_target}_INCLUDE_DIRS}")
+    set(_updated_include_dirs)
     foreach(_include_variable ${${_external_target}_INCLUDE_DIRS})
-      #message("[${_external_target}] Appending ${${_include_variable}}")
+      set(_expanded_include_variable ${_include_variable})
       if(${_include_variable})
-        list(APPEND ${_external_target}_INCLUDE_DIRS ${${_include_variable}})
-      else()
-        list(APPEND ${_external_target}_INCLUDE_DIRS ${_include_variable})
+        #message("[${_package_name}] Expanding [${_include_variable}] into [${${_include_variable}}]")
+        set(_expanded_include_variable ${${_include_variable}})
       endif()
-      #message("[${_external_target}] New dirs: ${${_external_target}_INCLUDE_DIRS}")
+      foreach(_include_dir ${_expanded_include_variable})
+        if(EXISTS ${_include_dir})
+          #message("[${_package_name}] Appending ${_include_dir}")
+          list(APPEND _updated_include_dirs ${_include_dir})
+        else()
+          message(STATUS "[${_package_name}] Skipping nonexistent include directory or not set variable [${_include_dir}]")
+        endif()
+      endforeach()
+      #message("[${_package_name}] New dirs: ${_updated_include_dirs}")
     endforeach()
-    #message("[${_external_target}] Appended dirs: ${${_external_target}_INCLUDE_DIRS}")
+    set(${_external_target}_INCLUDE_DIRS ${_updated_include_dirs})
+    #message("[${_package_name}] Appended dirs: ${${_external_target}_INCLUDE_DIRS}")
   endif()
   if(${_external_target}_LIBRARY_DIRS)
-    #message("[${_external_target}] Resolving library variables: ${${_external_target}_LIBRARY_DIRS}")
+    #message("[${_package_name}] Resolving library variables: ${${_external_target}_LIBRARY_DIRS}")
+    set(_updated_library_dirs)
     foreach(_library_variable ${${_external_target}_LIBRARY_DIRS})
-      #message("[${_external_target}] Appending ${${_library_variable}}")
+      set(_expanded_library_variable ${_library_variable})
       if(${_library_variable})
-        list(APPEND ${_external_target}_LIBRARY_DIRS ${${_library_variable}})
-      else()
-        list(APPEND ${_external_target}_LIBRARY_DIRS ${_library_variable})
+        #message("[${_package_name}] Expanding [${_library_variable}] into [${${_library_variable}}]")
+        set(_expanded_library_variable ${${_library_variable}})
       endif()
-      #message("[${_external_target}] New dirs: ${${_external_target}_LIBRARY_DIRS}")
+      foreach(_library_dir ${_expanded_library_variable})
+        if(EXISTS ${_library_dir})
+          #message("[${_package_name}] Appending ${_library_dir}")
+          list(APPEND _updated_library_dirs ${_library_dir})
+        else()
+          message(STATUS "[${_package_name}] Skipping nonexistent library directory or not set variable [${_library_dir}]")
+        endif()
+      endforeach()
+      #message("[${_package_name}] New dirs: ${_updated_library_dirs}")
     endforeach()
-    #message("[${_external_target}] Appended dirs: ${${_external_target}_LIBRARY_DIRS}")
+    set(${_external_target}_LIBRARY_DIRS ${_updated_library_dirs})
+    #message("[${_package_name}] Appended dirs: ${${_external_target}_LIBRARY_DIRS}")
   endif()
 endforeach()