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

在我的项目的配置属性中,在“ VC + + 目录”下有一个“包含目录”的条目。但在“ C/C + +”选项下,还有一个名为“附加包含目录”的条目。图书馆目录也是如此。

这两个条目有什么区别?

enter image description here enter image description here

56536 次浏览

The 包括目录 corresponds to the environment variable INCLUDE.

窗口中显示的目录设置是 Visual Studio will search for include files referred to in your source 代码文件。对应于环境变量 INCLUDE。

而通过命令行参数(即 \I选项)传递 附加包含目录

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

因此,最好将 VC + + 目录设置作为机器默认值。它是由 VS 安装程序自动预设的。只有在你需要一个不寻常的目录搜索顺序的时候才修改它,把自定义位置放在最后。这样做很不寻常。

不过确实管用。最终还是被利用了。增强 VS2012及以上版本的平台工具集设置。不同的编译器,不同的链接器,不同的 # include 目录,不同的链接器搜索路径。只用了一个设置就改进了,不错。

配置包括路径

VC + + 目录: 包括目录

  • 此值继承自在 < em > Visual Studio 之外定义的 INCLUDE 窗户环境变量
    • 环境变量可以是: 全局到计算机或具有用户级作用域
    • INCLUDELIB环境变量是在 Microsoft Windows SDKVisual Studio一起安装时创建的。

C/C + + : 附加包含目录

  • is a project level setting... you will have to define this value for every project in your solution
  • 此值可以持久化到源代码管理

附加说明

我该用哪个?

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

  • 您能够一致和可靠地重新创建开发环境(考虑: 将源代码交给另一个开发人员)
  • 组织中的开发人员使用一致的方法

关于宏的注释

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

REFERENCES

# include < filename > 和 # include“ filename”有什么区别?

“包括目录”-> #include <header>

“附加目录”-> #include "header"