源是通过 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
添加的,您可以在 PUBLIC
、INFERFACE
,和 PRIVATE
。 add_library
添加的源显然不是接口,但我不确定它们是 PUBLIC
还是 PRIVATE
.
CMake 命令 add_library
将其直接源解释为 PRIVATE
:源仅属于创建的目标,不会传播到与库链接的目标。
一般来说,非私人来源的使用非常有限。如果两个或多个目标链接在一起并共享一个源文件,那么链接器通常会报告有关该文件中定义的符号的“多重定义”错误。
我正在尝试向我的 CMake 项目添加更多结构。此过程的一个步骤是将源添加移动到几个子目录中的 CMakeLists.txt
,而它们目前是在目标创建期间通过 add_library
. Unlike add_library
, however, target_sources
添加的,您可以在 PUBLIC
、INFERFACE
,和 PRIVATE
。 add_library
添加的源显然不是接口,但我不确定它们是 PUBLIC
还是 PRIVATE
.
CMake 命令 add_library
将其直接源解释为 PRIVATE
:源仅属于创建的目标,不会传播到与库链接的目标。
一般来说,非私人来源的使用非常有限。如果两个或多个目标链接在一起并共享一个源文件,那么链接器通常会报告有关该文件中定义的符号的“多重定义”错误。