gpt4 book ai didi

c - 使用自动工具时如何禁用指定文件的指定警告?

转载 作者:行者123 更新时间:2023-12-04 16:18:57 28 4
gpt4 key购买 nike

我使用 autotools 来管理我的 CPP 项目。编译我的代码时,gcc 有这些标志:-Wall -Werror

因此,当我的代码中出现警告时,gcc 会将其视为错误,编译将被中断。

我的项目还包括 antlr3,它会生成几个文件。生成的文件包含多个警告,会中断编译。

error: unused variable ‘index21_49’
in CongerCQLLexer.c, line 20589, column 24
20587> ANTLR3_UINT32 LA21_49;
20588>
20589> ANTLR3_MARKER index21_49;
20590>
20591>

error: unused variable ‘index21_131’
in CongerCQLLexer.c, line 20622, column 24
20620> ANTLR3_UINT32 LA21_131;
20621>
20622> ANTLR3_MARKER index21_131;
20623>
20624>

我想知道如何禁用生成文件的警告?谢谢。

最佳答案

答案在很大程度上取决于您如何将 -Wall -Werror 引入构建。如果您直接在 configure.ac 中分配 CFLAGS,解决方案是停止这样做。 CFLAGS 是一个用户变量,只能由用户分配。如果您在 AM_CFLAGS 中设置它们,您可以通过 foo_CFLAGS 将它们仅添加到特定文件。但是,由于多种原因,将 -Wall -Werror 分配给 CFLAGS 并不是一个好主意,其中之一是并非所有编译器都接受这些标志。您是否希望构建以“-Werror -- unknown option”结束?尽管许多(大多数?)编译器确实接受 -Wall -Werror,但关键是您不知道您的用户使用的是什么编译器,也不知道 -Werror > 是有用的,甚至是被接受的,你不知道用户是否想要设置这些标志。让用户决定。

Automake 在配置时为特定翻译单元定义标志方面没有提供太多粒度,但是添加一个用户可以分配的变量将用于所有非构建源和另一个变量将相当简单对于内置源。用户可以分配 BUILT_CFLAGS,而不是分配 CFLAGS,您可以将它们添加到 foo_CFLAGS 以获得适当的 foo 值。通常解决方案是什么也不做,让用户进行必要的调整(即,用户将在 CFLAGS 中使用 -Werror 构建,看到构建失败,然后在没有 -Werror 的情况下重建。)

关于c - 使用自动工具时如何禁用指定文件的指定警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10275554/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com