如何在autotools项目上设置默认CPPFLAGS

时间:2012-01-17 19:46:17

标签: autotools automake

我需要为项目中的所有源文件设置“-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

3 个答案:

答案 0 :(得分:2)

在Makefile.am中:

AM_CPPFLAGS = -Wall -Wextra

您还可以添加替代品,例如

#Makefile.am
AM_CPPFLAGS = ${my_CPPFLAGS}

#configure.ac
my_CPPFLAGS="-Wall -Wextra"
AC_SUBST([my_CPPFLAGS])

请注意,并非所有-W标志都用于预处理器,而是用于编译器。只有预处理器标志进入* CPPFLAGS,而编译器标志进入* CFLAGS。 CFLAGS的配方与CPPFLAGS相同。

答案 1 :(得分:2)

<强>&GT; env CXXFLAGS =“$ CXXFLAGS -Wall -Werror”./ configure [options]

我用这种方法进行各种健全检查 - 确保我没有逃避任何草率的假设。这应该适用于 CPPFLAGS CFLAGS ,前提是他们了解这些选项。我可能会添加严格的“ - ansi”或其他一些标准,以及“ - 迂腐”以进行更多检查。

这样,当使用许可标志时,您可以单独保留configure.ac和Makefile.am文件 - 知道它可以在严格选项下正确构建。

答案 2 :(得分:0)

在Makefile.am中:

AM_CFLAGS = -Wall -Wextra