使用命令行在 Visual Studio 中编译为发行版
Posted
技术标签:
【中文标题】使用命令行在 Visual Studio 中编译为发行版【英文标题】:Compile as release in visual studio using command line 【发布时间】:2016-01-27 23:57:05 【问题描述】:我正在使用 Visual Studio 2013 在命令行 (cl.exe) 上编译 c++ 代码。我了解在使用 ide 时,有一个选项可以在发布模式或调试模式下编译。
命令行编译器是否也存在此选项?怎么访问?
我查看了 Microsoft 网站上附加到 cl.exe 的所有选项,但似乎没有一个适合。此外,Microsoft 网站似乎只包含有关如何通过 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
【讨论】:
看来msbuild
是针对项目的。我一直在编译源代码cl main.cpp
(与我在 Linux 发行版上使用 g++ 编译的方式几乎相同)。我是否需要将我的代码转换为项目才能获得“发布”版本?
为 cl.exe 添加了一些信息。
我尝试通过 RELEASE 模式编译,但是,我能够调试我的代码。有什么方法可以从二进制文件中去除调试符号?以上是关于使用命令行在 Visual Studio 中编译为发行版的主要内容,如果未能解决你的问题,请参考以下文章
通过命令行在 Visual Studio 中编译单个独立文件
使用 Visual Studio 2010 将 libexif 编译为静态库 - 然后从 Visual C++ 项目链接