【发布时间】:2018-08-28 14:02:21
【问题描述】:
我试图了解可以在target_include_directories 中指定的范围之间的区别,特别是PRIVATE 和INTERFACE。文档说(具体的上下文是header only library):
需要 INTERFACE、PUBLIC 和 PRIVATE 关键字来指定 以下论点的范围。 PRIVATE 和 PUBLIC 项目将 填充 的 INCLUDE_DIRECTORIES 属性。公众和 INTERFACE 项目将填充 INTERFACE_INCLUDE_DIRECTORIES 的财产。 (IMPORTED 目标仅支持 INTERFACE 项。) 以下参数指定包含目录。
所以基本上使用PRIVATE 或INTERFACE 修改INCLUDE_DIRECTORIES 或INTERFACE_INCLUDE_DIRECTORIES。我确实很难理解他们两个之间的区别。从文档 INCLUDE_DIRECTORIES 中的描述来看,似乎是编译 C++ 项目时标志 -I 的参数。
后者我完全不明白,谁能解释一下?
同样显然使用 INTERFACE 在仅使用标头库时会更好,这是为什么呢?
【问题讨论】:
标签: cmake