在Autoconf项目中强制执行严格的C99标准

10

我有一个用C语言编写的程序,它使用Autoconf。在configure.ac中,它使用了AC_PROG_CC_C99,当与gcc一起使用时,它将被翻译为-std=gnu99编译器选项。该程序按照C99规范进行严格编写,不使用任何GNU扩展。

我们应该如何设置Autoconf以使编译器强制执行这一规范?


2
你要找的标志是-std=c99 -pedantic,需要放在CFLAGS中;不过我不知道最好的方法是什么 :( - Christoph
谢谢。我认为我可以手动添加它们,但如果可能的话,我更喜欢让Autoconf完成。我不知道它是否支持。 - John X
1个回答

7
我通常使用一个m4宏来检查给定编译器是否接受特定的CFLAG。
将以下内容放入您的aclocal.m4中(我通常使用m4 / ax_check_cflags.m4代替):
# AX_CHECK_CFLAGS(ADDITIONAL-CFLAGS, ACTION-IF-FOUND, ACTION-IF-NOT-FOUND)
#
# checks whether the $(CC) compiler accepts the ADDITIONAL-CFLAGS
# if so, they are added to the CXXFLAGS
AC_DEFUN([AX_CHECK_CFLAGS],
[
  AC_MSG_CHECKING([whether compiler accepts "$1"])
  cat > conftest.c++ << EOF
  int main(){
    return 0;
  }
  EOF
  if $CC $CPPFLAGS $CFLAGS -o conftest.o conftest.c++ [$1] > /dev/null 2>&1
  then
    AC_MSG_RESULT([yes])
    CFLAGS="${CFLAGS} [$1]"
    [$2]
  else
    AC_MSG_RESULT([no])
   [$3]
  fi
])dnl AX_CHECK_CFLAGS

并在`configure.ac`中使用类似下面的内容调用它

AX_CHECK_CFLAGS([-std=c99 -pedantic])

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接