我通常使用m4-macro来检查给定的编译器是否接受某个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
Run Code Online (Sandbox Code Playgroud)
并使用类似的方法从configure.ac中调用它
AX_CHECK_CFLAGS([-std=c99 -pedantic])
Run Code Online (Sandbox Code Playgroud)