VC++“排除目录”项目设置实际上是做啥的?
Posted
技术标签:
【中文标题】VC++“排除目录”项目设置实际上是做啥的?【英文标题】:What does the VC++ "Exclude Directories" project setting actually do?VC++“排除目录”项目设置实际上是做什么的? 【发布时间】:2015-07-29 21:46:03 【问题描述】:我正在尝试使用新的 VS2015 precompiled header refactoring tool。当我启动它时,它会弹出一条消息:
要改进建议,请将第三方库路径添加到 VC++ 目录下的“排除目录”属性(在项目中 属性对话框)。
如果我在此处列出某个目录,我不清楚它究竟会被排除在什么之外。所有MSDN help text 不得不说的是:
检查构建依赖项时不搜索的目录
这有点帮助,但我仍然不能完全确定如果我在这里列出一些东西会获得/失去什么功能。比如说,提升(来自 pch 工具的消息似乎暗示了这一点)。谁能准确地说出这个设置的作用?
【问题讨论】:
【参考方案1】:一般的想法是,每次您点击“构建”时,IDE(或者更具体地说是 msbuild)都必须检查所有依赖项以查看哪些 cpp 文件需要重新构建。如果您有一个大型项目和许多标头(boost 是一个很好的例子),那么这可能需要检查数千个标头(因为每个标头还需要检查其依赖项)。
如果您有一个第三方库,例如 boost 很少更新,那么您可以将路径添加到排除框,这样依赖项检查器就不会检查这些库中的任何一个。 但是,如果您确实在某个时候更新了库,或者对其进行了一些小改动,那么您将不得不手动重建所有依赖它的项目,因为您已经告诉构建系统不要为你做这件事。
在实践中,即使有一些 MLOC 项目和 boost 安装,我也从未发现它是一个问题,尤其是在您使用 SSD 构建的情况下。如果您使用的是较旧的硬件,那么它可能值得使用,但我认为当您不可避免地忘记重建依赖项目时,它可能会导致问题。
【讨论】:
如果您将 Boost 安装保存在编号目录中(例如C:\Boost\boost_1_55_0
)并通过项目目录中的 Boost.props
文件引用它,那么更新 Boost 只会创建第二个目录,并使用升级后的目录Boost 版本是对 .props 文件的单行更改,它会触发必要的项目重建(即仅那些实际引用您的 boost.vsprops 的项目)
不错的建议。我真的很喜欢使用.props
文件来解决许多项目以上是关于VC++“排除目录”项目设置实际上是做啥的?的主要内容,如果未能解决你的问题,请参考以下文章
DeepLab 的 --train_crop_size 实际上是做啥的?
“OperationContext.Current.GetCallbackChannel”实际上是做啥的?