2013-10-16 167 views
0

我正在使用Visual Studio 2010创建一个小型C++可执行文件。由于我现在想要使用不同的编辑器,因此我必须从命令行调用cl.exe和link.exe。命令行中的Visual Studio

这是伟大的,VS提供了使用的命令行Project->Properties->C/C++->Commandline但是和->Linker->CommandLine
,他们不工作,很喜欢他们应该:

在我加入/c编译器命令行和删除的文件renaming-东西/Fp /Fa /Fo /Fdhttp://msdn.microsoft.com/en-us/library/fwkeyyhe.aspx

在我除去/MANIFEST/Manifesthttp://msdn.microsoft.com/en-us/library/y0zzbyt4.aspx

链接器命令行

结果是这样的:

cl.exe main.cpp /c /Zi /nologo /W3 /WX- 
    /O1 /Oi /Os /Oy /GL 
    /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_UNICODE" /D "UNICODE" 
    /Gm- /EHsc /GS /Gy /fp:precise 
    /Zc:wchar_t /Zc:forScope /Gd /analyze- /errorReport:queue 


link.exe *.obj /OUT:"test2.exe" /INCREMENTAL:NO /NOLOGO 
    "kernel32.lib" "user32.lib" "gdi32.lib" "winspool.lib" 
    "comdlg32.lib" "advapi32.lib" "shell32.lib" "ole32.lib" 
    "oleaut32.lib" "uuid.lib" "odbc32.lib" "odbccp32.lib" 
    /ALLOWISOLATION /MANIFESTUAC:"level='asInvoker' uiAccess='false'" 
    /DEBUG /PDB:"F:\prj\visualstudio2010\test2\Release\test2.pdb" 
    /SUBSYSTEM:CONSOLE /OPT:REF /OPT:ICF 
    /PGD:"F:\prj\visualstudio2010\test2\Release\test2.pgd" 
    /LTCG /TLBID:1 /DYNAMICBASE /NXCOMPAT /MACHINE:X86 /ERRORREPORT:QUEUE 

由此产生的EXE工作方式,如果我有使用GUI构建它的方式相同,但的问题是,它是145KB,而不是22KB出于某种原因。我应该接受还是有明显的GUI有我缺少的东西?

+0

你可以看到完整的生成日志,包括命令行开关,在项目的输出目录,<程序名称> .log文件。您也可以从命令行构建项目:http://msdn.microsoft.com/en-us/library/vstudio/xee0c8y7.aspx –

+0

您似乎没有/ MT和/ MD编译器开关。是否可以在一种情况下链接到CRT DLL,在另一种情况下链接到静态CRT?当不提供交换机时,我不确定使用哪一个。 –

+0

@AlexFarber我会看看,如果它不同 –

回答

1

您可以在项目输出目录program_name.log文件中看到完整的构建日志,包括命令行开关。你也可以通过命令行来编译这个项目:http://msdn.microsoft.com/en-us/library/vstudio/xee0c8y7.aspx

+0

供将来参考:如果我从日志文件(Alex)接收命令行并应用修改(我在我的问题中写入),它将起作用。 –

2

作为替代手动再现各个命令行参数,你可以使用msbuild.exe来构建从命令行的完整的解决方案:

在我的机器的命令将如下所示:

"c:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe" /t:Build /verbosity:minimal /maxcpucount /p:Configuration=Debug;Platform="x64" "C:\path\to\some_sln.sln" 

关于msbuild的完整文档可以在here找到。

我会尝试运行,看看你是否得到你期望的exe大小。

0

实际上,这是原始的海报显然是自己想出来的,但是从命令行运行Visual Studio工具的关键部分是运行下面的批处理文件来设置你的环境变量正确。否则,您会收到有关缺少DLL的错误,等等。 (这是Visual Studio 2008中,Windows 7中,但其他的组合可能是非常相似的。)

C:\ Program Files文件\微软的Visual Studio 9.0 \ VC \ BIN \ VCVARS32.BAT

它只是运行:

C:\ Program Files文件\微软的Visual Studio 9.0 \ Common7 \工具\ vsvars32.bat