“包含目录”和“其他包含目录”之间的区别是什么?

时间:2011-07-30 13:05:54

标签: c++ visual-studio-2010 visual-studio compilation

在我的项目的配置属性中,在“VC ++目录”下有一个“包含目录”条目。但在“C / C ++”选项下,还有另一个名为“Additional Include Directories”的条目。库目录也会发生同样的事情。

这两个条目有什么区别?

enter image description here enter image description here

3 个答案:

答案 0 :(得分:40)

这是在VS2010中引入的尴尬。 VC ++目录设置曾经位于工具+选项,项目和解决方案,VC ++目录中。应用于在计算机上构建的每个项目的全局设置。它仍然存在,但指出您现在应该在项目设置中更改它。 VS2010中构建引擎大修的副作用,可以使用msbuild进行构建。删除每个项目的设置是合乎逻辑的,但这会破坏太多的现有项目。

因此,最好将VC ++目录设置视为计算机默认设置。它由VS安装程序自动预设。只有当您需要一个不寻常的目录搜索顺序时,才能修改它,将自定义位置放在最后。这样做非常不寻常。

但确实有效。它确实最终被利用了。在VS2012及更高版本中增强平台工具集设置的能力。不同的编译器,不同的链接器,不同的#include目录,不同的链接器搜索路径。仅使用一个设置进行修改,很好。

答案 1 :(得分:19)

Include Directories对应于环境变量INCLUDE

  

窗口中显示的目录设置是其中的目录   Visual Studio将搜索源中引用的包含文件   代码文件。对应于环境变量INCLUDE。

Additional Include Directories通过命令行参数(即\I选项)传递。

答案 2 :(得分:13)

配置包含路径

VC ++目录:包含目录

  • 此值继承自 Visual Studio 之外定义的INCLUDE Windows 环境变量
    • 环境变量可以是:全局到计算机或具有用户级别范围
    • 使用 Visual Studio 安装 Microsoft Windows SDK 时,会创建INCLUDELIB个环境变量。

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

  • 是项目级别设置...您必须为解决方案中的每个项目定义此值
  • 此值可以持久保存到源代码管理

附加说明

我应该使用哪一个?

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

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

关于宏的注意事项

  • C ++项目配置(不要与C ++预处理器#define指令混淆)继承来自不同来源的内容。宏像......
    • $(Include) Windows 环境变量
    • 继承其值
    • $(OutDir) Visual Studio IDE
    • 继承其值

参考