Я использую Visual Studio 2010 для создания небольшого исполняемого файла C ++. Так как теперь я хочу использовать другой редактор, я должен позвонить cl.exe и link.exe из командной строки.
Замечательно, что VS предоставляет используемые командные строки в Project->Properties->C/C++->Commandline
а также ->Linker->CommandLine
однако, они не работают так, как должны:
В командной строке компилятора я добавил /c
и удалил файл-переименование-материал /Fp /Fa /Fo /Fd
(http://msdn.microsoft.com/en-us/library/fwkeyyhe.aspx)
В командной строке компоновщика я удалил /MANIFEST
а также /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:queuelink.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 работает так же, как если бы я построил его с помощью графического интерфейса, но проблема в том, что это 145 КБ вместо 22 КБ по какой-то причине. Должен ли я просто принять это или есть что-то очевидное, что есть в GUI и что мне не хватает?
Вы можете увидеть полный журнал сборки, включая ключи командной строки, в выходном каталоге проекта, program_name.log
файл. Вы также можете построить проект из командной строки: http://msdn.microsoft.com/en-us/library/vstudio/xee0c8y7.aspx
В качестве альтернативы ручному воспроизведению отдельных аргументов командной строки вы можете использовать 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.
На самом деле, это то, что оригинальный плакат, по-видимому, понял самостоятельно, но критически важной частью запуска инструментов 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