autoconf配置项目时gcc编译未启用-Wall等警告参数的问题求助
你对AM_INIT_AUTOMAKE宏的参数作用存在误解,这是警告参数没有传递给gcc的核心原因。AM_INIT_AUTOMAKE中传入的-Wall、-Werror是控制Automake工具自身行为的参数:前者会让Automake在解析Makefile.am时输出更多语法、规范类警告,后者会把这类Automake层面的警告转为错误,完全不会作用于C编译器的编译参数。
要给gcc传递警告参数,有两种常用实现方式:
- 临时调整:执行configure命令时手动传入编译参数,无需修改配置文件
./configure CFLAGS="-g -O2 -Wall -Werror -Wformat" - 固定默认参数:修改
configure.ac,直接向默认编译参数中追加警告配置,修改后的示例如下:AC_INIT(...) AM_INIT_AUTOMAKE([foreign]) AC_PROG_CC # 追加gcc警告参数 CFLAGS="$CFLAGS -Wall -Werror -Wformat" AC_CONFIG_HEADERS([config.h]) AC_CONFIG_FILES(...) AC_OUTPUT
修改完成后需要重新执行autoreconf -ivf重新生成配置脚本,再运行新生成的configure,之后执行make就能看到gcc调用命令中已携带对应的警告参数。
内容的提问来源于stack exchange,提问作者Arc
相关产品推荐
相关产品推荐

