“Include Directories”和“Additional Include Directories”之间的区别是什么?

在我的项目的configuration属性中,在“VC ++目录”下有一个“Include Directories”条目。 但是在“C / C ++”选项下,还有一个名为“Additional Include Directories”的条目。 图书馆目录也一样。

这两个条目有什么区别?

在这里输入图像说明在这里输入图像说明

这是在VS2010中引入的尴尬。 VC ++目录设置过去位于工具+选项,项目和解决scheme,VC ++目录。 应用于机器上构build的每个项目的全局设置。 它仍然在那里,但指出,你现在应该改变它在你的项目设置。 在VS2010中构build引擎的一个副作用,使用msbuildbuild立。 删除每个项目的设置将是合乎逻辑的,但这将打破太多的现有项目。

因此,最好将VC ++目录设置视为机器默认设置。 它由VS安装程序自动预设。 只有当你需要一个不寻常的目录search顺序,把自定义的位置最后修补它。 这是非常不寻常的。

它确实工作。 它最终也被利用了。 在VS2012中启用平台工具集设置。 不同的编译器,不同的链接器,不同的#include目录,不同的链接器searchpath。 修改只有一个设置,很好。

包含目录对应于环境variablesINCLUDE

窗口中显示的目录设置是Visual Studio将search源代码文件中引用的包含文件的目录。 对应于环境variablesINCLUDE。

虽然其他包含目录通过命令行parameter passing(即\I选项)。

configuration包含path

VC ++目录:包括目录

  • 此值是从Visual Studio以外定义的INCLUDE Windows环境variablesinheritance而来的
    • 环境variables可以是:全局到计算机或具有用户级别的范围
    • 使用Visual Studio安装Microsoft Windows SDK时,会创buildINCLUDELIB环境variables。

C / C ++:其他包含目录

  • 是一个项目级的设置…你将不得不为你的解决scheme中的每个项目定义这个值
  • 这个值可以持久化来源控制

补充笔记

我应该使用哪一个?

使用“ 包含目录”或“ 其他包含目录 ”的决定取决于组织的开发过程。 在我看来,更重要的是:

  • 您可以始终如一地可靠地重新创build开发环境(想想:将源代码交付给其他开发人员)
  • 对于组织内的开发人员使用一致的方法

关于macros的一个注意事项

  • C ++项目configurationmacros (不要与C ++预处理器#define指令混淆)inheritance不同来源的内容。 macros像…
    • $(Include)Windows环境variablesinheritance它们的值
    • $(OutDir)Visual Studio IDEinheritance它们的值

参考

  • 环境variables(一般介绍)
  • 如何在Windows中设置path和环境variables