【问题标题】:What is the default privacy/scope setting for include_directories?include_directories 的默认隐私/范围设置是什么?
【发布时间】:2019-08-14 19:15:21
【问题描述】:

我了解target_include_directories() 可以与PUBLICINTERFACEPRIVATE 结合使用,以指定目录的范围或隐私。但是很多过时的代码仍然使用include_directories(),我不确定使用它们的目标是如何处理这些目录的。

使用include_directories() 与使用target_include_directories(MyTarget PRIVATE ...) 基本相同吗?我见过this 类似的问题,但是include_directories() 也没有默认 范围界定行为吗?

【问题讨论】:

    标签: cmake scope dependencies include


    【解决方案1】:

    使用include_directories() 与使用target_include_directories(MyTarget PRIVATE ...) 基本相同吗?

    是的,对于每个受include_directories影响的目标(即在当前CMakeLists.txt及以下),它与特定目标版本中的PRIVATE关键字具有相同的效果命令。


    Documentation for include_directories 表示,该命令分配目标和目录的INCLUDE_DIRECTORIES 属性:

    包含目录被添加到当前CMakeLists 文件的INCLUDE_DIRECTORIES 目录属性中。它们还会添加到当前CMakeLists 文件中每个目标的INCLUDE_DIRECTORIES 目标属性中。

    还有目录属性affects 在其他目标的目录上:

    此属性用于填充INCLUDE_DIRECTORIES 目标属性。

    通过target_include_directories 命令的PRIVATE 关键字精确定位INCLUDE_DIRECTORIES 目标属性is affected

    PRIVATEPUBLIC 项目将填充 <target>INCLUDE_DIRECTORIES 属性。 PUBLICINTERFACE 项目将填充<target>INTERFACE_INCLUDE_DIRECTORIES 属性。

    【讨论】:

      猜你喜欢
      • 2018-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-21
      • 2017-04-10
      • 2014-03-28
      • 2012-05-04
      • 2010-10-17
      相关资源
      最近更新 更多