C++ 叮当声:警告:编译期间未使用参数:'-stdlib=libc++';

C++ 叮当声:警告:编译期间未使用参数:'-stdlib=libc++';,c++,cmake,C++,Cmake,我找不到太多关于这方面的信息。 什么会导致clang指定此警告 我有一台运行cmake脚本的开发机器,一切正常。同样的cmake文件正在构建服务器上执行,上面的消息一直被打印出来 构建服务器正在运行clang3.8,而我的开发机器正在运行clang4。 我也不能用一个简单的解决方案来重现这个问题。 例如,简单的main.cpp不会导致此错误: clang++ main.cpp -std=c++14 -stdlib=libc++ 即使在构建机器上也可以正常工作 你知道为什么会打印出来吗 这是我使

我找不到太多关于这方面的信息。 什么会导致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}>")
set(库发布选项)-Wall;-Wextra;-pedantic;-Wlong long;-Wmissing大括号;-Wunused函数;-Wuninitialized;-Wunused标签;-Wunused参数;-Wdisabled优化;-O2;-std=c++14;”)
添加库(${SHARED\u library\u NAME}静态${SERVER\u SOURCE})
目标编译选项(${SHARED\u LIBRARY\u NAME}PUBLIC“$”)

如果要使警告静音,请将
-Wno error=unused命令行参数
添加到
LIBRARY\u RELEASE\u选项中
这是使用ccache、distcc等消除警告所必需的


另外,最好使用
set(CMAKE\u CXX\u标准14)
而不是添加
-std=c++14
库\发布\选项

问题似乎与ccache有关。
ccache 3.3.3按预期运行,而ubuntu 16 LTS上的3.2.4似乎会导致此警告。

您是否使用
-nostdinc++
构建?@Jarod42不,我是否也应该指定它?您可能有一个选项,使
'-stdlib=libc++'
未使用<代码>-nostinc++
就是其中一个选项。你应该提供有问题的命令行。顺便说一句@Jarod42我发现了问题,当我删除ccache时,一切都正常了。。。没有更多的警告。但我真的很想用ccachue这个建议能解决问题吗?或者这个建议是一个最佳实践技巧?这让我们决定什么是最好的,而不仅仅是使用一个列表并将其传递出去。@Crippin用更适合您的东西更新了我的答案。有趣的是,这是一个已知的错误吗?我使用的是3.3.4