2016-01-27 64 views
0

我正在使用visual studio 2013在命令行(cl.exe)上编译C++代码。我知道在使用ide时,可以选择在发布模式或调试模式下编译。使用命令行编译为visual studio中的版本

此选项是否也存在于命令行编译器中?它如何被访问?

我已经看过所有在Microsoft网站上连接到cl.exe的选项,但似乎没有一个适合。此外,微软网站似乎只包括如何通过ide进行编译发布。

回答

1

您要使用的工具是MSBuild.exe

从开发人员命令提示符处,运行所有选项的msbuild /?

例子:

MSBuild MyApp.sln /t:Rebuild /p:Configuration=Release 
MSBuild MyApp.csproj /t:Clean /p:Configuration=Debug;TargetFrameworkVersion=v3.5 

如果你想与cl.exe时/ LINK.EXE要做到这一点,有一个很大的“这取决于”什么切换你想要的。如果您是在纯粹的默认值之后,它仍然可能取决于您的项目在Visual Studio中的外观。一个简单的方法是在VS中创建一个简单的项目,查看项目属性Configuration Properties并查看每个项目的Command Line。或者通过帮助去cl /?link /?

对于基本的项目,可能是:

发布:

/GS /GL /analyze- /W3 /Gy /Zc:wchar_t /Zi /Gm- /O2 /Fd"Release\vc140.pdb" /Zc:inline /fp:precise /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_UNICODE" /D "UNICODE" /errorReport:prompt /WX- /Zc:forScope /Gd /Oy- /Oi /MD /Fa"Release\" /EHsc /nologo /Fo"Release\" /Fp"Release\ConsoleApplication2.pch" 

调试:

/GS /analyze- /W3 /Zc:wchar_t /ZI /Gm /Od /Fd"Debug\vc140.pdb" /Zc:inline /fp:precise /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_UNICODE" /D "UNICODE" /errorReport:prompt /WX- /Zc:forScope /RTC1 /Gd /Oy- /MDd /Fa"Debug\" /EHsc /nologo /Fo"Debug\" /Fp"Debug\ConsoleApplication2.pch" 

正如你可以看到,有很多选项,没有单一的答案,但Release版本的巨大差异是/D "NDEBUG"/O2

+0

似乎'msbuild'是用于项目。我一直在编译源代码'cl main.cpp'(几乎和我在linux发行版上用g ++编译东西的方式一样)。我是否需要将我的代码转换为项目才能获得“发布”版本? – Liam

+0

为cl.exe添加了一些信息。 –

+0

谢谢!这已经非常丰富。 – Liam