我的Visual Studio安装未按我希望的方式运行。我正在将VS 2017与2015工具链一起使用。
如果我对影响多个cpp文件的一个头文件进行重大更改,下一次F7重新编译将使Visual Studio再次重新编译所有这些文件(以及它可以找到的所有其他依赖项)。这样,构建错误列表将显示所有这些受影响文件的错误,我可以按顺序遍历所有这些文件。
然后我仅通过对某些文件进行适当的更改来修复某些错误,然后进行F7重新编译时,Visual Studio有时仅重新编译这些更改的文件。因此,在第二次编译期间,所有未更改(未修复)的文件将不再重新编译。似乎第一个编译没有删除相应的obj文件,而是给它们加了时间戳,因此在第二个编译中它不再检测到需要重新编译这些文件了吗?不会发生这种情况(obj保留其旧时间戳记),但是看起来好像是这样做的。
无论出于何种原因,这在许多方面都是不可取的。首先,我失去了F8支持,无法遍历所有其他所有文件的所有未解决的错误,其次(当然,并非最不重要),如果受影响的函数的签名未更改,则链接器将很乐意重用这些旧的obj,从而导致无效的版本,在运行时会导致随机崩溃。
使所有一切重新进行的唯一方法是再次触摸原来更改的标头,从而强制重新编译所有相关文件(例如,添加空格,再次删除,重新保存,),或者对文件进行清理/重建。项目(非常耗时)。
我的VS安装是否已损坏?我无法想象这是理想的行为...还是这种优化是由我不了解但仍然经过调整的某些设置控制的?