FindBoost: Tolerate future Boost INTERFACE libraries

Since commit 0dd6772a89 (FindBoost: Add legacy variables and targets for
compatibility, 2019-06-14, v3.15.0-rc2~3^2~1) we query imported targets
provided by `BoostConfig.cmake` for their `IMPORTED_LOCATION_<cfg>`.
Querying this property is not allowed on INTERFACE libraries, so add a
condition to avoid doing so in case Boost adds one in the future.

Suggested-by: Alexander Grund <alexander.grund@tu-dresden.de>
Issue: #19656, #19402
This commit is contained in:
Brad King 2019-09-04 08:24:09 -04:00
parent 2d357b7a68
commit 907d3ed824

View File

@ -353,6 +353,8 @@ 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}")
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)
@ -361,6 +363,10 @@ function(_boost_set_legacy_variables_from_config)
_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)