我需要将“-Wall -Werror”设置为项目中所有源文件的 CPPFLAGS。有没有办法在自动工具中做到这一点?

我在 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

最佳答案

> env CXXFLAGS="$CXXFLAGS -Wall -Werror"./configure [options]

我将它用于各种健全性检查 - 确保我不会逃避任何草率的假设。这也适用于 CPPFLAGS CFLAGS ,前提是他们了解选项。我可能会添加严格的 "-ansi" 或其他一些标准,以及 "-pedantic" 以进行更多检查。

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

关于autotools - 如何在 autotools 项目上设置默认 CPPFLAGS,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8900738/

10-14 13:21