c++ - clang: 警告: -lgtest: 'linker' 输入未使用

标签 c++ netbeans clang compiler-warnings googletest

我正在使用 C++11 开发应用程序,我的编译器是 CLang++ 3.3。我还在 Linux Mint 14 上使用 Netbeans 7.3 IDE。

我的所有测试都是使用 GoogleTest (gtest-1.6.0) 完成的,除了本文标题中提到的警告外,几乎所有测试都运行良好。

这里以netbeans执行的命令行为例:

clang++ -pedantic-errors -lgtest -pthread   -c -g -Wall -std=c++11 -pedantic-errors -lgtest -pthread -MMD -MP -MF build/Debug/CLang-Linux-x86/_ext/1802678175/main.o.d -o build/Debug/CLang-Linux-x86/_ext/1802678175/main.o ../GIT_CryptoCode/src/main.cpp

我不知道为什么,但该命令包含两次某些属性,当然会给出两次相同的警告。这是我在项目属性中所做的: Properties of the project : C++ Compiler 如果我删除附加选项,gtest 将无法正常工作,命令行会变成这样:clang++ -c -g -Wall -std=c++11 ...。我应该怎么做才能避免某些属性重复?

好吧,即使使用 cmake,我也收到了 Clang 的警告(这次出现一次 :))。我还使用 GCC 4.7 进行了测试,但没有收到任何警告。这是我在 GCC 的 cmake 文件中使用的命令行:

set (CMAKE_CXX_FLAGS                "-Winline -Wall -Werror -pedantic-errors -pthread -std=c++11")

因此,Clang 似乎是问题所在。有谁知道这个警告来自哪里以及如何删除它?这是 Clang 错误吗?

感谢您的帮助。

最佳答案

我要感谢@Fraser 的帮助,帮助我找到了删除警告的方法。基本上,不是在 C++ 编译器部分的附加选项中编写 -pedantic-errors -lgtest -pthread 给出重复警告,这些属性应该在项目的链接器部分。 enter image description here

因此,C++ 编译器部分的附加选项留空。现在,我可以毫无问题地使用 -Werror 属性。

此外,在 cmake 文件中,行

target_link_libraries(${Project_Name} ${GTEST_BOTH_LIBRARIES})

将 gtest 库链接到项目。因此,在

中不需要 -lgtest
set (CMAKE_CXX_FLAGS   "-Winline -Wall -Werror -pedantic-errors -pthread -std=c++11")

两者,对于 GCC 和 Clang。

关于c++ - clang: 警告: -lgtest: 'linker' 输入未使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19572233/

相关文章:

javascript - 如何防止下载和运行脚本?

javax.net.ssl.SSLPeerUnverifiedException : peer not authenticated in netbeans

tomcat - Sesame API 调用抛出 IOException

c++ - clang 和 gcc 中是否有 Visual C++ __declspec (属性声明属性)的替代方案?

c++ - void() 用作模板参数时意味着什么?

c++ - 我可以检查一个类*不是*默认可构造的吗?

c++ - 一行复制构造函数

java - JSch 断开按钮

c++ - 用 clang++ 生成的可执行文件变得疯狂

c++ - clang_complete 错误 : unknown argument: '--std=c++0x'