与AC_PROG_CC_C11
AC_PROG_CC_C99
类似物没有mention。
如何让我的autotools项目将--std=c11
放入CFLAGS
?
答案 0 :(得分:6)
最简单的就是把
CFLAGS+=" -std=c11"
进入configure.ac
(除AC_PROG_CC
之外)。 configure.ac
是shell脚本的模板,因此您只需将shell代码放入其中即可。实际上,所有AC_FOO_BAR
m4宏都会自行扩展为shell代码。
警告:这不会检查您的编译器是否实际支持-std=c11
标志。如果您想检查一下,可以使用AX_CHECK_COMPILE_FLAG
中的autoconf archive:
AX_CHECK_COMPILE_FLAG([-std=c11], [
CFLAGS+=" -std=c11"
], [
echo "C compiler cannot compile C11 code"
exit -1
])
...虽然只是等到编辑中的某些内容失败也会起作用,我想。不过,这样的错误信息会更好。
答案 1 :(得分:1)
AC_DEFUN([AX_CHECK_STDC],
[AX_CHECK_COMPILE_FLAG([-std=gnu11],
[AX_APPEND_FLAG([-std=gnu11])],
[AX_CHECK_COMPILE_FLAG([-std=c11],
[AX_APPEND_FLAG([-std=c11])],
[AX_CHECK_COMPILE_FLAG([-std=c99],
[AX_APPEND_FLAG([-std=c99])],
[AC_MSG_ERROR([C compiled does not support at least C99!])])
])
])
])
输出:
checking whether C compiler accepts -std=gnu11... no
checking whether C compiler accepts -std=c11... no
checking whether C compiler accepts -std=c99... yes
(使用shit Microchip xc16 PIC编译器构建时)