nmake:是不是可以禁用编译警告?

Posted

技术标签:

【中文标题】nmake:是不是可以禁用编译警告?【英文标题】:nmake: is it possible to disable compilation warnings?nmake:是否可以禁用编译警告? 【发布时间】:2010-01-13 11:35:08 【问题描述】:

Microsoft nmake 工具将在构建过程中输出任何编译器警告。这在构建大型项目(如 Qt)时非常烦人。使用nmake时是否可以禁用警告显示?

【问题讨论】:

【参考方案1】:

不是 nmake 向您显示警告,而是使用的编译器/工具/脚本。因此,您必须查看您的Makefile,找出 nmake 正在调用哪些程序,并查看有关此工具命令行选项的文档。例如,对于 Microsoft C++ 命令行编译器 cl,您可以添加“/w”来禁用所有警告。 cl /? 将显示可用选项的列表。对于其他程序,其他命令行选项可能是合适的。

如果你真的不喜欢看到任何输出,你可以调用

nmake >nul: 2>nul:

将所有输出发送到 nirwana,但我很确定这不是您想要的。

【讨论】:

通常,Microsoft nmake 使用 Microsoft C 和 C++ 编译器。有什么方法可以从 nmake 或作为 makefile 中的一些 gloval 指令提供 /w 键? 查看此处msdn.microsoft.com/en-us/library/d7ahf12s%28VS.71%29.aspx 以了解有关 Nmake 的可重新定义选项宏的更多信息。但是您必须查看 Makefile 以确定这些宏是否还没有被覆盖。【参考方案2】:

对于 Microsoft 的 C/C++ 编译器,您可以使用 #pragma 指令禁用代码中的特定警告

#pragma warning(disable:4005)

这将禁用警告 4005。当您包含可疑代码后,您可以重新启用警告:

#pragma warning(default:4005)

【讨论】:

是的,但是对于大型项目,这将需要更改 10000 多个源文件 :)。我感兴趣的是 - 是否可以禁用“nmake”实用程序级别的警告。【参考方案3】:

首先,应考虑并“解决”绝大多数警告。

其次,您可以使用 #pragma 指示 Arve

第三种解决方案见here:

禁用所有编译器警告

    在解决方案资源管理器中选择项目后,在项目菜单上单击属性。 单击“编译”选项卡。 选中禁用所有警告复选框。

禁用单个编译器警告

    在解决方案资源管理器中选择项目后,在“项目”菜单上,单击“属性”。 单击“编译”选项卡。 在默认编译器选项表中,将警告的通知值设置为无。

将所有编译器警告视为编译错误

    在解决方案资源管理器中选择项目后,在“项目”菜单上,单击“属性”。 单击“编译”选项卡。 选中将所有警告视为错误复选框。

将单个编译器警告视为编译错误

    在解决方案资源管理器中选择项目后,在“项目”菜单上,单击“属性”。 单击“编译”选项卡。 在默认编译器选项表中,将警告的通知值设置为错误。

【讨论】:

作为一名程序员,我总是使用 4 级警告,而我的代码没有任何警告 :)。但是大型开源跨平台项目,如 Qt、Blender、GIMP 等往往有 1000 条警告并且通常没有解决方案 :(. OP说他用的是nmake,所以第三种方案没有意义。

以上是关于nmake:是不是可以禁用编译警告?的主要内容,如果未能解决你的问题,请参考以下文章

如何禁用 TSLint 警告 - 深度导入

无法禁用特定编译器警告 (4100)

禁用所有 gcc 警告

VS2013 忽略编译指示警告禁用

禁用 /W4 警告以进行提升

在 Qt Creator 中禁用编译器警告项目范围(使用 MSVC 时)