我有一个用C语言编写的程序,它使用Autoconf。在configure.ac
中,它使用了AC_PROG_CC_C99
,当与gcc一起使用时,它将被翻译为-std=gnu99
编译器选项。该程序按照C99规范进行严格编写,不使用任何GNU扩展。
我们应该如何设置Autoconf以使编译器强制执行这一规范?
# 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])
-std=c99 -pedantic
,需要放在CFLAGS
中;不过我不知道最好的方法是什么 :( - Christoph