proper way to wrap an imported target around a third-party target

Hi,

I’m coming back to this thread because I’m a bit stuck with 3rd party libraries that don’t use namespace.
I require all my dependencies to use namespace for homogeneity.

For instance OpenCV does not provide OpenCV::OpenCV.
I do this:
find_package(${PackName} REQUIRED)
IF(${PackName}_FOUND AND NOT TARGET ${PackName}::${PackName})
add_library(${PackName}::${PackName} UNKNOWN IMPORTED)
set_target_properties(${PackName}::${PackName} PROPERTIES
IMPORTED_LINK_INTERFACE_LANGUAGES “CXX”
IMPORTED_LOCATION “${${PackName}_LIBRARIES}”
INTERFACE_INCLUDE_DIRECTORIES “${${PackName}_INCLUDE_DIRS}”
)
target_link_libraries(${TARGET_NAME} ${Inheritance} ${PackName}::${PackName})
ENDIF()
but then I’ve got a build error, telling me that there is no rule to build target opencv_calib3d required for my target (actually opencv_calib3d is the first lib in OpenCV_LIBRARIES)

Besides I do it twice:
first in a static library L that publicly depends on OpenCV
then on my application A that depends both on L and on OpenCV

then in the build.make file of A, I see the list of OpenCV libraries twice. The build issues then a warning about an overloaded rule.

What do I miss?
Is it possible to have also some insights on my more general questions above?

Many thanks in advance
PS I duplicate the OpenCV related part in another threads as the issue is perhaps more related to opencv than to cmake