【问题标题】:CMake LINK_PRIVATE and its "inheritance"CMake LINK_PRIVATE 及其“继承”
【发布时间】:2014-01-14 22:27:37
【问题描述】:

如果我有一个链接到其他几个 .lib 文件的 my_library.lib 文件,例如:

add_library( my_library ...)
target_link_libraries( my_library LINK_PUBLIC lib1 lib2 ...)

如果我现在使用 LINK_PRIVATE

将这个 my_library.lib 文件链接到另一个库(也需要 lib1、lib2 等。这就是上面代码中 LINK_PUBLIC 的原因)
target_link_libraries( some_other_library LINK_PRIVATE my_library )

我会“保护”我仅用于编译 my_library 的 lib1、lib2 和其他库吗?

【问题讨论】:

    标签: c++ cmake static-linking


    【解决方案1】:

    LINK_PUBLIC:使当前链接目标的传递依赖关系对将要链接到当前目标的其他目标可见。所以lib1lib2 将与my_library 一起链接,当my_library 与其他东西链接时。

    LINK_PRIVATE:使当前链接目标的传递依赖关系对将与当前链接目标链接的其他目标不可见。所以lib1lib2 不会与my_library 一起链接,当my_library 与其他东西链接时。

    总而言之,当some_other_library 将链接到其他东西时,由于最终的LINK_PRIVATE,它的依赖关系将不会被链接到它所链接的目标。

    【讨论】:

      猜你喜欢
      • 2015-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-27
      • 2010-09-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多