【发布时间】:2012-01-17 19:46:16
【问题描述】:
我需要将“-Wall -Werror”设置为项目中所有源文件的 CPPFLAGS。有没有办法在 autotools 中做到这一点?
我在 configure.ac 中尝试过以下操作:
AC_SUBST([AM_CPPFLAGS], [-Wall -Wextra])
它似乎不起作用。
编辑: 我在这里找到了一个名为 AX_CXXFLAGS_WARN_ALL 的 m4 宏:http://www.gnu.org/software/autoconf-archive/ax_cflags_warn_all.html 但是当我尝试使用它时出现以下错误:
configure.ac:10: /usr/bin/m4: ERROR: recursion limit of 1024 exceeded, use -L<N> to change it
autom4te: /usr/bin/m4 failed with exit status: 1
aclocal: autom4te failed with exit status: 1
autoreconf: aclocal failed with exit status: 1
我的configure.ac如下:
AC_INIT([foo], [1.0], [bar@baz.com])
m4_include([m4/ax_cflags_warn_all.m4])
m4_include([m4/ax_append_flag.m4])
m4_include([m4/ax_lib_oracle_oci.m4])
m4_include([m4/ax_check_openssl.m4])
AM_INIT_AUTOMAKE([foreign subdir-objects])
AM_PROG_CC_C_O
AC_PROG_CXX
AC_PROG_LIBTOOL
AX_CFLAGS_WARN_ALL
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_FILES([Makefile])
AX_LIB_ORACLE_OCI([11.0])
AX_CHECK_OPENSSL
AC_SUBST([AM_CXXFLAGS], [-fpic])
AC_OUTPUT
【问题讨论】:
-
您真的需要设置
-Wall -Werror才能使您的项目正常工作吗?或者你只是想把它作为你的个人默认值?在后一种情况下,在您的个人构建中将其传递给configure,并将其排除在Makefile.am之外,这样可以帮助您的分布式源的分发者和其他接收者。