[英]How to check support compile flag in autoconf for clang
我们可以使用以下命令检查对autoconf
特定编译器标志的支持:
AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS], [INPUT])
这些检查返回true,但是clang
不支持它们。
AX_CHECK_COMPILE_FLAG([-Woverride-init])
AX_CHECK_COMPILE_FLAG([-Wformat-truncation])
如何在autoconf
检查clang
support compile标志?
我通过更改我的编译器
export CC=/usr/bin/clang-6.0
export CXX=/usr/bin/clang++-6.0
如果回显到脚本$CC
和$CXX
,则一切正常。
如果使用clang -Wsome-invalid-option -xc /dev/null
,则会看到clang发出有关未知选项-Wsome-invalid-option
的警告。 AX_CHECK_COMPILE_FLAG
的文档指出警告已被忽略。
您需要使用宏的参数4来包含-Werror
:
AX_CHECK_COMPILE_FLAG([-Woverride-init], , , [-Werror])
如果您需要覆盖它,此检查还会生成一个缓存变量:
ax_cv_cflags__Werror__Woverride_init
如果将其设置为yes
,则编译器支持该标志,否则它不支持该标志。 您也可以将其用于其他标志:
AX_CHECK_COMPILE_FLAG([-Wformat-truncation], , , [-Werror])
AS_VAR_IF([ax_cv_cflags__Werror__Wformat_truncation], [yes],
,
[AC_FATAL([-Wformat-truncation not supported])])
通用格式为ax_cv_cflags_{EXTRA}_{FLAG}
。显然,如果您要使用AS_VAR_IF
来检查缓存变量,则也可以使用第二个和/或第三个宏参数,并且如果需要编译标志,可以使用AC_FATAL
:
AX_CHECK_COMPILE_FLAG([-Wformat-truncation],
,
[AC_FATAL([-Wformat-truncation is required])],
[-Werror])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.