clang:警告:编译期间未使用的参数:"-stdlib=libc++"

clang: warning: argument unused during compilation: '-stdlib=libc++'

本文关键字:参数 -stdlib libc++ 未使用 警告 编译 clang      更新时间:2023-10-16

我找不到太多关于这方面的信息。什么会导致 clang 指定此警告?

我有一台运行 cmake 脚本的开发机器,一切正常。在构建服务器上执行相同的 cmake 文件,上述消息一直在打印出来。

构建服务器运行 clang3.8,而我的开发机器运行 clang4。我也无法用简单的解决方案重现这个问题。例如,一个简单的 main.cpp 不会导致此错误:

clang++ main.cpp -std=c++14 -stdlib=libc++

即使在构建机器上也能正常工作。

知道为什么这可能会被打印出来吗?

这是我使用的标志:

set(LIBRARY_RELEASE_OPTIONS "-Wall;-Wextra;-pedantic;-Wlong-long;-Wmissing-braces;-Wunused-function;-Wuninitialized;-Wunused-label;-Wunused-parameter;-Wdisabled-optimization;-O2;-std=c++14;")
add_library(${SHARED_LIBRARY_NAME} STATIC ${SERVER_SOURCE})                                             
target_compile_options(${SHARED_LIBRARY_NAME} PUBLIC "$<$<CONFIG:RELEASE>:${LIBRARY_RELEASE_OPTIONS}>")

这个问题似乎与 ccache 有关。ccache 3.3.3 按预期工作,而 Ubuntu 16 LTS 上的 3.2.4 似乎会导致此警告。

如果要

使警告静音,请在LIBRARY_RELEASE_OPTIONS中添加-Wno-error=unused-command-line-argument,这是使用 ccache、distcc 等平息警告所必需的。

此外,最好使用set(CMAKE_CXX_STANDARD 14),而不是向LIBRARY_RELEASE_OPTIONS添加-std=c++14;