[CMake] Proposal: extra option PRIVATE for target_link_libraries

Marcel Loose loose at astron.nl
Wed Dec 23 06:08:47 EST 2009


Hi all,

I suggested this in the quite long thread "third party library
dependencies", but it may have been overlooked. Hence, I started a new
thread.

Upon (re)reading the Mandriva page
http://wiki.mandriva.com/en/Overlinking, I was thinking: maybe the issue
of overlinking can be solved more or less the same way as pkg-config
does: i.e. by defining private dependencies. This could be an extra
option to target_link_libraries. 
Something like:

  target_link_libraries(mylib public1 public2 PRIVATE private1 private2)

This would tell CMake that mylib directly depends on public1 and public2
and should only link in these two libraries when these are shared
object libraries; otherwise private1 and private2 would also need to be
added on the link line.

The big hurdle to take, of course, is to detect in a
platform-independent way whether the given library is shared or static.
However, a lot of this knowledge is already available in the diverse
Modules/Platform macros, so my feeling is that this should be feasible.

Best regards,
Marcel Loose.




More information about the CMake mailing list