【问题标题】:Are the sources added to a library via the add_library command PUBLIC or PRIVATE?源是通过 add_library 命令 PUBLIC 还是 PRIVATE 添加到库中的?
【发布时间】:2021-10-24 22:31:47
【问题描述】:

我正在尝试为我的 CMake 项目添加更多结构。此过程的一个步骤是将源添加移动到几个子目录中的CMakeLists.txts,而目前它们是通过add_library 在目标创建期间添加的。然而,与add_library 不同的是,target_sources 让您可以在PUBLICINFERFACEPRIVATE 之间进行选择。 add_library添加的源显然不是接口,但我不确定是PUBLIC还是PRIVATE

【问题讨论】:

    标签: c++ cmake


    【解决方案1】:

    CMake 命令add_library 将其直接源解释为PRIVATE:源仅属于创建的目标,不会传播到与库链接的目标。

    一般来说,非私人来源的用途非常有限。如果两个或多个目标链接在一起并共享一个源文件,则链接器通常会报告有关该文件中定义的符号的“多个定义”错误。

    【讨论】:

      猜你喜欢
      • 2022-07-10
      • 1970-01-01
      • 2019-08-07
      • 1970-01-01
      • 2021-12-22
      • 1970-01-01
      • 2011-09-17
      • 1970-01-01
      相关资源
      最近更新 更多