首页 > 解决方案 > 源是通过 add_library 命令 PUBLIC 还是 PRIVATE 添加到库中的?

问题描述

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

标签: c++cmake

解决方案


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

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


推荐阅读