什么是默认的target_link_libraries隐私设置?

时间:2018-07-18 07:59:47

标签: c++ cmake

我想知道默认的target_link_libraries隐私是什么。

我在CMake中添加了一行:

target_link_libraries(myTarget
        libraryA
        libraryB
        )

但是我不知道它是PRIVATE还是PUBLIC还是INTERFACE。 我检查了documentation,但看不到我的问题的答案:(

编辑:

我发现了sth

  

最后一点,如果您调用target_link_libraries()而没有   指定PRIVATE,PUBLIC或INTERFACE中的任何一个,您可能会想   相信它将被视为PUBLIC。情况实际上是   比这更复杂。它可能被视为PUBLIC或   私有,取决于其他target_link_library()调用和/或   目标属性操作已执行。该文件   对于target_link_libraries()谈了一点,但是您必须   深入研究文档中提到的目标属性   了解什么情况导致PRIVATE或   公众行为。

什么情况? (顺便说一句。这句话的作者是Craig Scott,他似乎是SO的活跃用户,我相信他可以回答我...)

1 个答案:

答案 0 :(得分:3)

policy 0023的描述表明,target_link_libraries没有没有“默认”行为-每个项目都应使用全关键字或无关键字调用此命令,关键字:

  

纯文本关键字和关键字target_link_libraries签名不能混合使用。