我找不到太多关于这方面的信息。什么会导致 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;