【问题标题】:Problem with autoconf not making gcc with -Wall warningsautoconf 没有使用 -Wall 警告生成 gcc 的问题
【发布时间】:2021-12-31 01:06:18
【问题描述】:

我有一个简单的项目,带有一个简单的configure.ac 脚本:

AC_INIT(...)
AM_INIT_AUTOMAKE([-Wall -Werror foreign])
AC_PROG_CC
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_FILES(...)
AC_OUTPUT

使用 GNU Autoconf 2.69 版(OpenSUSE Linux with gcc 9.2.1),但 gcc 被调用时没有警告标志:

gcc -DHAVE_CONFIG_H -I. -I..    -g -O2 -MT aprog.o -MD -MP -MF .deps/aprog.Tpo -c -o aprog.o aprog.c
mv ...
gcc  -g -O2   -o aprog aprog.o -lgmp

特别是我发现了-Wformatnot working-Wall 不应该包含-Wformat 吗?并且不应该所有警告都出现在 make 行上吗?如果我直接使用 -Wformat 运行 gcc 行,编译时会显示警告,但在运行 autoconfconfiguremake 时不会显示。

我做错了什么?

【问题讨论】:

    标签: gcc compiler-warnings autoconf automake


    【解决方案1】:

    AM_INIT_AUTOMAKE(...) 调用中的 -Wall 标志是指来自 automake 和相关工具(如 aclocal)的警告,而不是编译器警告。运行 autoreconf 时会看到这些警告。

    请注意,虽然您可以也将-Werror 添加到AM_INIT_AUTOMAKE(...) 以使您的autoreconf 在出现警告时运行失败,但许多常见宏(如随gettext 或 libtool) 仍将使用会产生警告的已弃用宏,因此-Werror 表示您不能使用此标准工具集,因此-Werror 在许多情况下并不是很有用。

    如果你想添加编译器选项,有一个第三方宏(例如AX_CHECK_COMPILE_FLAG)可以测试编译器是否识别给定的编译选项,然后你可以将它们添加到某个变量并在某些地方使用它。不过,这是一个不同的 stackoverflow 问题。

    【讨论】:

    • 哦,谢谢,我对自动工具不太熟悉。所以,我的猜测是我应该在Makefile.am 中指定-Wall gcc 选项,就像在AM_CPPFLAGS 中一样?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-02
    • 2018-07-18
    • 1970-01-01
    • 2022-01-07
    • 2021-07-22
    • 2023-01-03
    相关资源
    最近更新 更多