繁体   English   中英

如何在Autoconf中检查clang的支持编译标志

[英]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 ,则一切正常。

链接到configure.ac

如果使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM