0

Visual Studio 2010 を使用して小さな C++ 実行可能ファイルを作成しています。別のエディターを使用したいので、コマンド ラインからcl.exeと link.exe を呼び出す必要があります。

Project->Properties->C/C++->Commandline VS が使用されるコマンドラインを 提供することは素晴らしいことですが ->Linker->CommandLine
、本来のようには機能しません。

コンパイラのコマンド ラインで/c、file-renaming-stuff /Fp /Fa /Fo /Fd ( http://msdn.microsoft.com/en-us/library/fwkeyyhe.aspx )を追加および削除しました。

/MANIFESTリンカ コマンド ラインでandを削除しました/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を使用してビルドした場合と同じように機能しますが、問題は、何らかの理由で22kbではなく145kbであることです。私はそれを受け入れる必要がありますか、それとも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 に答える