Visual Studio (c++)-关于目录配置的最佳实践是什么?

Visual Studio (C++)- what is the best practice regarding directories configurations?

本文关键字:最佳 是什么 配置 于目录 Studio c++ Visual      更新时间:2023-10-16

(我使用的是VS 2010,但大多数信息至少与VS 2003相关,可能在构建配置菜单GUI的组织/布局上略有不同)

在配置项目构建时,有一个名为的"vc++目录"的部分包含6个标签。其中2个是:

    图书馆目录
  1. 包括目录

另外,如果你去'C/c++ ' -> 'Additional Include Directories',你可以指定额外的目录,AFAIK(从MSDN和VS帮助中对这些目录的描述)与'Include Directories'相同(尽管它们之间可能有一些搜索顺序)。同样地,如果你去'Linker' -> 'Additional Library Directories'你可以指定额外的库链接到项目的路径(这里的描述更精确-"允许用户覆盖环境库路径",所以这些路径被更快地搜索)。

我的问题是-

是否有理由使用其中一个(路径)而不是另一个?什么是最佳实践?

请将您的答案与使用属性页功能联系起来(这增加了不同项目配置的灵活性,并允许轻松重用现有的功能,但这使我对这里的最佳实践更加困惑)。

让我们先考虑只包含路径。

Microsoft文档指出编译器按照以下顺序搜索目录:

  1. 包含源文件的目录

  2. /I选项指定的目录,按CL遇到它们的顺序排列。

  3. INCLUDE环境变量指定的目录。

现在,vc++目录"包含目录"对应于INCLUDE变量。也就是说,这些目录是最后搜索的。根据文档

和["C/c++ "→"General"→"附加包含目录"对应于/I选项。也就是说,首先搜索这些目录。根据文档

如果存在最佳实践,它可能是

  • 保留重写include的可能性,和

  • 最大限度地减少编译器调用命令行长度(以免对糟糕的Windows造成压力-我记得有一个8 KB的限制,或大约8 KB)。

。,使用vc++目录;→默认包含目录"]


环境变量对应的完整集合:

  • ["vc++ Directories"→"可执行目录"→ PATH

  • ["vc++ Directories"→"包括directories"]→ INCLUDE

  • ["vc++ Directories"→参考目录"]→ LIBPATH (适用于#using)

  • ["vc++ Directories"→"图书馆directories"→ LIB


我是怎么知道的?

只需在GUI中单击并按F1寻求帮助。: -)

RTFM总是一个好主意

默认情况下,Visual Studio在其INCLUDE变量中放置以下路径( vc++ Directories -> Include Directories ):

  • Microsoft Visual c++头文件的路径:$(VCInstallDir)include
  • MFC头文件的路径(用于MFC项目):$(VCInstallDir)atlmfcinclude
  • Windows SDK头文件的路径:$(WindowsSdkDir)include;$(FrameworkSDKDir)include

它们是预先配置的,只要把它们放在它们所在的地方就可以了。如果你的项目依赖于一些额外的组件/框架,添加路径到他们的头C/c++ -> General -> additional Include Directories (/I编译器开关)。在本例中,#include语句使用尖括号。

库也是如此-保留Visual Studio的默认值,并将来自其他组件/框架的库路径添加到Linker ->附加库目录

相关文章: