源是通过 add_library 命令 PUBLIC 还是 PRIVATE 添加到库中的?

Are the sources added to a library via the add_library command PUBLIC or PRIVATE?

我正在尝试向我的 CMake 项目添加更多结构。此过程的一个步骤是将源添加移动到几个子目录中的 CMakeLists.txt,而它们目前是在目标创建期间通过 add_library. Unlike add_library, however, target_sources 添加的,您可以在 PUBLICINFERFACE,和 PRIVATEadd_library 添加的源显然不是接口,但我不确定它们是 PUBLIC 还是 PRIVATE.

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

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