What is the use of target_link_libraries( ... PUBLIC ... )?

target_link_libraries(A B)'s affect on A is the same as target_link_libraries(A PUBLIC B). However, if there are multiple calls to target_link_libraries(A ...), they all need to be either plain or keyword. CMP0023 disallowed mixing them. These days the PUBLIC/PRIVATE/INTERFACE keywords are preferred. As discussed in CMake Issue 25981, the target_link_libraries documentation could use an overhaul to present the modern conventions first.