如何在 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
?
我更改了我的编译器
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])])
对于 Cax_cv_cflags_{EXTRA}_{FLAG}
通用形式。 显然,如果你打算使用AS_VAR_IF
来检查缓存变量,但是,你也可以使用第二个和/或第三个宏参数,如果需要编译标志,你可以使用AC_FATAL
:
AX_CHECK_COMPILE_FLAG([-Wformat-truncation],
,
[AC_FATAL([-Wformat-truncation is required])],
[-Werror])
相关文章:
- valgrind-hellgrind与泄漏检查的结果不同
- C++模板来检查友元函数的存在
- 检查输入是否不是整数或数字
- 编译时未启用intel oneApi CUDA支持
- 试图让变量检查数组中的某些内容
- POCO::PostgreSQL:如何将std::vector支持添加到`Binder::bind`
- Vulkan 的传输队列系列功能和显卡支持:条件检查是否准确?
- 如何在 clang 的自动会议中检查支持编译标志
- 检查 fopen 不支持的文件名
- 是否有任何工具支持C++基于检查点的内存使用情况分析
- 正在检查运行时是否支持SSE
- 如何检查arm-none linux-gnueabi-g++对C++11的支持
- 是否有任何 ATL 支持的宏可以检查 hResults 并返回值
- 如何检查特定 g++ 版本支持 C++11 的程度
- 检查我的互联网提供商是否支持并在我的操作系统中以编程方式启用IPv6/Teredo
- 如何检查扫描仪支持的图像格式
- 检查是否支持DirectX或OpenGL
- c++ lua支持与语法检查和功能完成
- 是否支持检查mmap
- 如何检查CPU是否支持SSE3指令集