clang:警告:编译期间未使用的参数:"-stdlib=libc++"
clang: warning: argument unused during compilation: '-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}>")
这个问题似乎与 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;
相关文章:
- 如何反转整数参数包
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 如何使用默认参数等选择模板专业化
- 模板参数替换失败,并且未完成隐式转换
- 具有默认模板参数的多态类的模板推导失败
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 函数调用中参数的顺序重要吗
- 部分定义/别名模板模板参数
- 模板-模板参数推导:三个不同的编译器三种不同的行为
- 使用不带参数的函数访问结构元素
- 基于另一个成员参数将函数调用从类传递给它的一个成员
- 如何在OMNET++中指定与命令行参数组合的输出文件名
- 如何使用Luacneneneba API正确读取字符串和表参数
- 在派生函数中指定void*参数
- 视图中的参数推导失败:take_while
- static_assert在宏中,但也可以扩展到可以用作函数参数的东西
- 使用指向成员的指针将成员函数作为参数传递
- 没有名称的C++模板参数
- clang:警告:编译期间未使用的参数:"-stdlib=libc++"