如何设置发布/调试模式以使用 Microsoft C++ 工具集在命令提示符处编译 cpp 文件

Posted

技术标签:

【中文标题】如何设置发布/调试模式以使用 Microsoft C++ 工具集在命令提示符处编译 cpp 文件【英文标题】:How to set release/debug mode to compile a cpp file at a command prompt using Microsoft C++ toolset 【发布时间】:2020-05-23 06:20:37 【问题描述】:

我有 a code 在 VS2019 版本 x86 模式下工作正常,但在调试模式下不行。有没有办法在命令行中使用发布模式功能?例如 CL 或 link.exe 的选项。 CL 命令行语法是

CL [选项...] 文件... [选项 |文件]... [lib...] [@command-file] [/link link-opt...]

以下是 MSVC 编译器选项列表: MSVC Compiler Options 有一些优化选项,例如 /O1 /O2,但它们不会产生与 VS 版本构建相同的结果。我在寻找错误的东西吗?提前感谢您的帮助。

更新

我发现我的代码的正确选项是 /MD 用于运行时库设置。因此,在命令提示符下使用以下行,复制了发布模式的结果:

>cl /MD app.cpp

【问题讨论】:

如果你的代码不能在调试模式下工作,那可能是某个地方的未定义行为,并且通过以另一种方式编译来规避问题是一个非常糟糕的主意。发布模式不会修复错误,而只是通过取消运行时检查使问题变得更糟。 我同意你的看法。我知道我的代码需要一些改进并且存在内存访问问题,但我认为 CL 会自动优化它,我只是想看看我是否可以在命令提示符下重现发布模式的结果。 【参考方案1】:

Visual Studio 的项目配置属性将准确地告诉您每个构建配置中使用了哪些编译器和链接器选项。见:https://docs.microsoft.com/en-us/cpp/build/working-with-project-properties?view=vs-2019

【讨论】:

谢谢。我没有注意到 VS 配置属性中的广泛选项。我发现我的代码的正确选项是运行时库设置的 /MD(多线程 DLL)。

以上是关于如何设置发布/调试模式以使用 Microsoft C++ 工具集在命令提示符处编译 cpp 文件的主要内容,如果未能解决你的问题,请参考以下文章

SSIS 脚本组件 - 仅在调试模式下工作

在调试模式下以编程方式设置 WCF 超时

如何仅使用快捷键在调试或发布模式下切换正在运行的 Xcode 项目?

如何从 Visual Studio 以调试模式运行 NUnit?

如何在 Visual Studio 2015 中开始调试时自动附加 Web 项目以处理“MicrosoftEdgeCP.exe”(Microsoft Edge)

Dart:如何在调试和生产模式下使用不同的设置?