Since cmTarget::ComputeLinkInterface is called separately for each "head" target that links a target, the warning we produce when CMP0022 is not set could be repeated. Add explicit logic to allow the warning to appear at most once. Multiple copies of the warning for the same target are almost always identical and therefore redundant. In the rare case that two copies of the warning are different, the second can appear in a future run after the first is fixed.
17 lines
500 B
CMake
17 lines
500 B
CMake
|
|
project(CMP0022-WARN)
|
|
|
|
add_library(foo SHARED empty_vs6_1.cpp)
|
|
add_library(bar SHARED empty_vs6_2.cpp)
|
|
add_library(bat SHARED empty_vs6_3.cpp)
|
|
set_property(TARGET bar PROPERTY INTERFACE_LINK_LIBRARIES foo)
|
|
set_property(TARGET bar PROPERTY LINK_INTERFACE_LIBRARIES bat)
|
|
|
|
add_library(user empty.cpp)
|
|
target_link_libraries(user bar)
|
|
|
|
# Use "bar" again with a different "head" target to check
|
|
# that the warning does not appear again.
|
|
add_library(user2 empty_vs6_3.cpp)
|
|
target_link_libraries(user2 bar)
|