防止临时对象文件在 MSVC 中撞击磁盘
Posted
技术标签:
【中文标题】防止临时对象文件在 MSVC 中撞击磁盘【英文标题】:Prevent temporary object files hitting disk in MSVC 【发布时间】:2020-06-15 11:27:14 【问题描述】:假设我有一个名为 test.cpp
的 CPP 文件。在使用 gcc 9.3.0 的 Ubuntu 上,我可以使用以下命令:
test.o)
gcc test.o -o test.out(从目标文件test.o
创建可执行文件test.out
)
gcc test.cpp -o test.out(只创建最终的可执行文件test.out
)
最后一个选项很好,因为编译后没有中间目标文件。 (我不确定 gcc 是否在内存中执行所有操作,或者目标文件是否在链接期间被清理之前暂时撞击磁盘)。
在 Windows 上,cl test.cpp /link /out:test.exe
创建可执行文件 test.exe
,还创建目标文件 test.obj
。
有没有办法阻止 MSVC 创建中间对象文件?或者,是否有请求 MSVC 清理的链接选项?
【问题讨论】:
【参考方案1】:没有。最好的办法是使用/Fo
flag 将.obj
文件转储到%TMPDIR%
左右。
不要对大型构建执行此操作,因为 foo/Bar.cpp
和 qux/Bar.cpp
将映射到 Bar.obj
并给您带来非常有趣的编译/链接错误。
【讨论】:
以上是关于防止临时对象文件在 MSVC 中撞击磁盘的主要内容,如果未能解决你的问题,请参考以下文章