【问题标题】:Compile as release in visual studio using command line使用命令行在 Visual Studio 中编译为发行版
【发布时间】:2016-01-27 23:57:05
【问题描述】:

我正在使用 Visual Studio 2013 在命令行 (cl.exe) 上编译 c++ 代码。我了解在使用 ide 时,有一个选项可以在发布模式或调试模式下编译。

命令行编译器是否也存在此选项?怎么访问?

我查看了 Microsoft 网站上附加到 cl.exe 的所有选项,但似乎没有一个适合。此外,Microsoft 网站似乎只包含有关如何通过 ide 编译发布的介绍。

【问题讨论】:

    标签: visual-studio compilation


    【解决方案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 模式编译,但是,我能够调试我的代码。有什么方法可以从二进制文件中去除调试符号?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-02
    • 1970-01-01
    • 2020-09-22
    • 1970-01-01
    • 1970-01-01
    • 2010-10-04
    相关资源
    最近更新 更多