使 autotools 添加 --std=c11 到 CFLAGS
Make autotools add --std=c11 to CFLAGS
没有 mention 的 AC_PROG_CC_C11
类似于 AC_PROG_CC_C99
。
如何让我的 autotools 项目将 --std=c11
放入 CFLAGS
?
最简单的方法是
CFLAGS+=" -std=c11"
到你的configure.ac
(除了AC_PROG_CC
)。 configure.ac
是 shell 脚本的模板,因此您只需将 shell 代码放入其中即可。事实上,所有 AC_FOO_BAR
m4 宏本身都扩展为 shell 代码。
警告:这不会检查您的编译器是否真的支持 -std=c11
标志。如果你想检查它,你可以使用 AX_CHECK_COMPILE_FLAG
from the autoconf archive:
AX_CHECK_COMPILE_FLAG([-std=c11], [
CFLAGS+=" -std=c11"
], [
echo "C compiler cannot compile C11 code"
exit -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 编译器构建时)
没有 mention 的 AC_PROG_CC_C11
类似于 AC_PROG_CC_C99
。
如何让我的 autotools 项目将 --std=c11
放入 CFLAGS
?
最简单的方法是
CFLAGS+=" -std=c11"
到你的configure.ac
(除了AC_PROG_CC
)。 configure.ac
是 shell 脚本的模板,因此您只需将 shell 代码放入其中即可。事实上,所有 AC_FOO_BAR
m4 宏本身都扩展为 shell 代码。
警告:这不会检查您的编译器是否真的支持 -std=c11
标志。如果你想检查它,你可以使用 AX_CHECK_COMPILE_FLAG
from the autoconf archive:
AX_CHECK_COMPILE_FLAG([-std=c11], [
CFLAGS+=" -std=c11"
], [
echo "C compiler cannot compile C11 code"
exit -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 编译器构建时)