“包含目录”和“其他包含目录”之间有什么区别


94

在项目的配置属性中,“ VC ++目录”下有一个“包含目录”条目。但是在“ C / C ++”选项下,还有另一个条目“其他包含目录”。库目录也会发生相同的情况。

这两个条目有什么区别?

在此处输入图片说明 在此处输入图片说明

Answers:


48

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

因此,最好将VC ++目录设置作为计算机的默认值。它由VS安装程序自动预设。仅当您需要异常的目录搜索顺序时,才对它进行修补,将自定义位置放在最后。这样做非常不寻常。

但是确实可以。并最终获得了利用。在VS2012及更高版本中启用“平台工具集”设置。不同的编译器,不同的链接器,不同的#include目录,不同的链接器搜索路径。修改只有一个设置,很好。


3
嗯......这真实的,gloabl选项下这个保存-但是这是属性表Microsoft.Cpp.Win32.user,只有这个。如果在项目处于活动状态或另一个属性表时编辑“ VC ++目录”条目,则更改将保存在.vcxproj文件或相应.props文件中,并且将不会是全局的或整个用户范围的。
马丁·巴

25

包含目录对应于环境变量INCLUDE

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

其他包含目录是通过命令行参数(即\I选项)传递的。


19

配置包含路径

VC ++目录:包括目录

  • 此值是从Visual Studio外部定义的INCLUDE Windows环境变量继承的
    • 环境变量可以是:计算机全局或具有用户级别范围
    • INCLUDELIB当创建环境变量的Microsoft Windows SDK安装有Visual Studio中

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

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

补充笔记

我应该使用哪一个?

使用包含目录附加包含目录的决定取决于组织的开发过程。我认为这更为重要:

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

关于宏的注意事项

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

参考资料

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.