我刚刚发现你可以配置Visual Studio(但这个问题对于任何编译器都是一样的)将中间.o文件转储到源树之外的单独文件夹中,而不是与每个单独的项目一起.这使得清理项目变得容易,以便存档到zip或沿着这些行的东西.
为什么这种配置不常见?有任何重大缺点吗?
我会选择“因为 VS 是在真空中开发的,外部世界的想法不会经常侵入。以这种方式组织构建文件在 Visual Studio 的第一个版本(或其非 Studio 前身)中可以接受),因为这一直是内部完成的方式,并且没有人从外部进来并说“你知道,世界其他地方真的很想将中间垃圾文件和它们的实际源代码分开”, VS 团队从未认为这是一个问题。
这只是一个猜测,但我想不出更好的解释。
这是Visual Studio 中的默认设置,并且已经存在相当长一段时间了(至少可以追溯到 VC++ 6)。中间目录默认与输出目录相同,而不是源目录。这意味着所有目标文件都放置在最终输出旁边。
事实上,如果您正在处理希望将编译器输出与源文件放在一起的项目,则需要一些技巧。由于VC++默认给目标文件与其对应的源文件同名(但扩展名不同),如果你有多个同名的源文件(但路径不同),那么每个源文件的编译都会覆盖对应的对象文件。最后一个要编译的文件“获胜”。
这自然会破坏构建。
要求源文件名在整个项目中全局唯一实际上非常烦人。您可以更改输出位置,例如使其包含路径;链接器仍然做正确的事情。
| 归档时间: |
|
| 查看次数: |
3321 次 |
| 最近记录: |