使autotools将-std = c11添加到CFLAGS

时间:2015-02-17 09:07:38

标签: c autotools c11

AC_PROG_CC_C11 AC_PROG_CC_C99类似物没有mention

如何让我的autotools项目将--std=c11放入CFLAGS

2 个答案:

答案 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编译器构建时)