“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时,会创build
INCLUDE
和LIB
环境variables。
C / C ++:其他包含目录
- 是一个项目级的设置…你将不得不为你的解决scheme中的每个项目定义这个值
- 这个值可以持久化来源控制
补充笔记
我应该使用哪一个?
使用“ 包含目录”或“ 其他包含目录 ”的决定取决于组织的开发过程。 在我看来,更重要的是:
- 您可以始终如一地可靠地重新创build开发环境(想想:将源代码交付给其他开发人员)
- 对于组织内的开发人员使用一致的方法
关于macros的一个注意事项
- C ++项目configurationmacros (不要与C ++预处理器
#define
指令混淆)inheritance不同来源的内容。 macros像…-
$(Include)
从Windows环境variablesinheritance它们的值 -
$(OutDir)
从Visual Studio IDEinheritance它们的值
-
参考
- 环境variables(一般介绍)
- 如何在Windows中设置path和环境variables