Yes, it has such a default, for when PUBLIC
/PRIVATE
is omitted always. However, once you use such a keyword in one invocation, you have to use it in all of them.
The way to think about it is to consider target_link_libraries()
to have two distinct modes of operation: plain one, and keyword-based one. You can use it just fine in either mode, but you cannot mix modes for the same consuming target.