clang:warning:编译期间未使用的参数:' -stdlib = libc ++'

时间:2017-11-03 11:35:23

标签: c++ cmake

我找不到关于此的更多信息。 什么可以导致clang指定此警告?

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

构建服务器正在运行clang3.8而我的dev机器正在运行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}>")

2 个答案:

答案 0 :(得分:1)

问题似乎与ccache有关。 ccache 3.3.3正如预期的那样工作,而在ubuntu 16上的3.2.4 LTS似乎会引起这个警告。

答案 1 :(得分:0)

如果要使警告静音,请将-Wno-error=unused-command-line-argument添加到LIBRARY_RELEASE_OPTIONS,这是通过ccache,distcc等来平息警告所必需的。

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