Compilation VSEXPRESS.EXE或MSBUILD.EXE是否最终使用CL.EXE编译并使用link.EXE链接

Compilation VSEXPRESS.EXE或MSBUILD.EXE是否最终使用CL.EXE编译并使用link.EXE链接,compilation,linker,filesize,Compilation,Linker,Filesize,为什么当我使用VCExpress test.sln/build“Release”/project“test”或msbuild编译work.c时,输出文件是8kb而当我使用CL.exe/Tp w.c user32.lib创建它时,最终输出是37kb 它们(vsexpress、msbuild、nmake)不是最后都用CL.EXE编译并用link.EXE链接吗?(如果你能简单地回答这个问题,我会很容易找到答案,因为我知道答案就在cl.exe或link.exe选项和开关中) vsexpress在此过程中

为什么当我使用
VCExpress test.sln/build“Release”/project“test”或
msbuild编译
work.c
时,输出文件是
8kb
而当我使用
CL.exe/Tp w.c user32.lib创建它时,最终输出是
37kb

它们(vsexpress、msbuild、nmake)不是最后都用
CL.EXE编译并用
link.EXE链接吗?(如果你能简单地回答这个问题,我会很容易找到答案,因为我知道答案就在
cl.exe
link.exe
选项和开关中)

vsexpress在此过程中做了什么? 它是否使用一种导致较小大小的
cl.exe
命令编译它? 它有不同的联系吗

顺便说一句:代码没有什么特别之处,只是一个简单的窗口,带有一个从msdn复制的按钮,但如果您必须在这里,它是:


我希望它们都使用
CL.EXE
编译,并使用
link.EXE
链接,如果你不这么说,你会让我非常难过(祈祷)

也许文件大小的差异可能是
msbuild
和朋友们使用的各种默认标志的结果。更好的比较方法是复制项目将使用的标志,并将这些标志显式传递给
cl
。如果使用msbuild构建解决方案,则将在控制台输出中的某个位置获得cl.exe和LINK.exe调用。比较应用于手动呼叫的开关。我猜您将看到msbuild自动应用某些链接器优化。