VC++ "Exclude Directories" 项目设置的实际作用是什么?

What does the VC++ "Exclude Directories" project setting actually do?

我正在尝试使用新的 VS2015 precompiled header refactoring tool。当我启动它时,它会弹出一条消息:

To improve recommendations, add third party library paths to the 'Exclude Directories' property under VC++ Directories (in the Project Properties dialog).

如果我在此处列出某个目录,我不清楚具体是从哪个目录中排除的。所有 MSDN help text 不得不说的是:

Directories not to search when checking for build dependencies

这有点帮助,但我仍然不完全确定如果我在此处列出一些内容,我将 gain/lose 具有哪些功能。比如说,boost(来自 pch 工具的消息似乎暗示了这一点)。谁能确切地说出这个设置的作用?

一般的想法是,每次点击 'Build' 时,IDE(或更具体地说是 msbuild)必须检查所有依赖项以查看需要重建哪些 cpp 文件。如果你有一个大项目和许多 headers(boost 是一个很好的例子)那么这可能需要检查数千个 headers(因为每个 header 也需要有它的依赖检查)。

如果您有第三方库(例如很少更新的 boost),那么您可以将路径添加到“排除”框中,这样依赖项检查器就不会费心检查这些库中的任何一个。 但是,如果您在某个时候更新了库,或者对它做了一个小改动,那么您将不得不手动重建所有依赖的项目在上面,因为你已经告诉构建系统不要为你做这件事。

在实践中,我从来没有发现它是一个问题,即使有一些 MLOC 项目和升压安装,尤其是当你使用 SSD 构建时。如果您使用的是较旧的硬件,那么它可能值得使用,但我认为当您不可避免地忘记重建依赖项目时,它可能会导致问题。