c++ - 源是通过 add_library 命令 PUBLIC 还是 PRIVATE 添加到库中的?
问题描述
我正在尝试为我的 CMake 项目添加更多结构。此过程的一个步骤是将源添加移动到CMakeLists.txt
几个子目录中的 s 中,而它们当前是在目标创建期间通过add_library
. add_library
然而,与 不同,target_sources
您可以在 、 和 之间PUBLIC
进行INFERFACE
选择PRIVATE
。添加的源add_library
显然不是接口,但我不确定它们是PUBLIC
还是PRIVATE
.
解决方案
CMake 命令add_library
将其直接源解释为PRIVATE
:源仅属于创建的目标,不会传播到与库链接的目标。
一般来说,非私人来源的用途非常有限。如果两个或多个目标链接在一起并共享一个源文件,则链接器通常会报告有关该文件中定义的符号的“多个定义”错误。
推荐阅读
- c# - 无法跟踪实体类型“书签”的实例,因为已经在跟踪具有相同键值 {'ID'} 的另一个实例
- html - 我需要一只公鹿从底部变成一半红色,在顶部变成一半白色,但不是渐变的颜色机会。旁边有个黑圈
- node.js - 如何以确切的时间戳运行一些代码?
- c# - 如何从 C# 列表中排除日期格式
- javascript - 如何使用 React 中的 Hooks 更改两个子组件中的父状态?
- python - 如何将缺失的日期添加到多索引 df?
- react-native - KeyboardAvoidingView 不适用于覆盖
- java - 对于 ORC 文件,我只能使用 Hive 删除或更新数据吗?
- tensorflow - 设计神经网络并在 tensorflow 上实现
- r - 如何在 R 中自动化这个简单的条件列操作?