Browse Source

Merge topic 'FindBoost-1.71'

907d3ed824 FindBoost: Tolerate future Boost INTERFACE libraries
2d357b7a68 FindBoost: Clarify role of legacy variables in warning message

Acked-by: Kitware Robot <[email protected]>
Merge-request: !3780
Brad King 6 years ago
parent
commit
790db8d477
1 changed files with 15 additions and 9 deletions
  1. 15 9
      Modules/FindBoost.cmake

+ 15 - 9
Modules/FindBoost.cmake

@@ -345,7 +345,7 @@ function(_boost_set_legacy_variables_from_config)
       _boost_get_existing_target(${comp} target)
       if(NOT target)
         if(Boost_DEBUG OR Boost_VERBOSE)
-          message(WARNING "Could not find imported target for required component '${comp}'. Standard variables for this component might be missing. Refer to the documentation of your Boost installation for help on variables to use.")
+          message(WARNING "Could not find imported target for required component '${comp}'. Legacy variables for this component might be missing. Refer to the documentation of your Boost installation for help on variables to use.")
         endif()
         continue()
       endif()
@@ -353,14 +353,20 @@ function(_boost_set_legacy_variables_from_config)
       _boost_set_if_unset(Boost_${uppercomp}_LIBRARY "${target}")
       _boost_set_if_unset(Boost_${uppercomp}_LIBRARIES "${target}") # Very old legacy variable
       list(APPEND libraries "${target}")
-      foreach(cfg RELEASE DEBUG)
-        get_target_property(lib ${target} IMPORTED_LOCATION_${cfg})
-        if(lib)
-          get_filename_component(lib_dir "${lib}" DIRECTORY)
-          list(APPEND library_dirs ${lib_dir})
-          _boost_set_cache_if_unset(Boost_${uppercomp}_LIBRARY_${cfg} "${lib}")
-        endif()
-      endforeach()
+      get_property(type TARGET "${target}" PROPERTY TYPE)
+      if(NOT type STREQUAL "INTERFACE_LIBRARY")
+        foreach(cfg RELEASE DEBUG)
+          get_target_property(lib ${target} IMPORTED_LOCATION_${cfg})
+          if(lib)
+            get_filename_component(lib_dir "${lib}" DIRECTORY)
+            list(APPEND library_dirs ${lib_dir})
+            _boost_set_cache_if_unset(Boost_${uppercomp}_LIBRARY_${cfg} "${lib}")
+          endif()
+        endforeach()
+      elseif(Boost_DEBUG OR Boost_VERBOSE)
+        # For projects using only the Boost::* targets this warning can be safely ignored.
+        message(WARNING "Imported target '${target}' for required component '${comp}' has no artifact. Legacy variables for this component might be missing. Refer to the documentation of your Boost installation for help on variables to use.")
+      endif()
       _boost_get_canonical_target_name("${comp}" canonical_target)
       if(NOT TARGET "${canonical_target}")
         add_library("${canonical_target}" INTERFACE IMPORTED)