0

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

VS 在 Project->Properties->C/C++->Commandline->Linker->CommandLine
但是,它们的工作方式并不尽如人意:

在编译器命令行中,我添加/c并删除了文件重命名内容/Fp /Fa /Fo /Fdhttp://msdn.microsoft.com/en-us/library/fwkeyyhe.aspx

在链接器命令行中,我删除了/MANIFESTand /Manifest ( http://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 有什么明显的东西我错过了?

4

4 回答 4

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 的完整文档。

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

于 2013-10-16T17:06:50.973 回答
1

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

于 2013-10-17T06:38:08.017 回答
0

您可以从命令行或 .bat 文件编译 C++ 项目。这适用于 VS2019:

rem path to Visual studio. No quotation marks:
set vspath=C:\Program Files (x86)\Microsoft Visual Studio\2019\Community
rem path to vcvars files 
set batpath=%vspath%\VC\Auxiliary\Build
rem set system path
path %batpath%;%path%
rem set all paths and include directories for 64-bit mode compilation
call vcvars64.bat x64
rem compile:
cl [options] test.cpp /Fetest.exe
rem pause to see if compilation succeeds
pause
rem run the compiled program
test.exe
pause
于 2019-04-27T11:28:21.547 回答
0

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

C:\Program Files\Microsoft Visual Studio 9.0\VC\bin\vcvars32.bat

它只是运行:

C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\vsvars32.bat

于 2017-06-14T11:28:50.480 回答