我正在使用CLang++ 3.3编译器和Linux Mint 14上的Netbeans 7.3 IDE开发C++11应用程序。我使用GoogleTest(gtest-1.6.0)进行所有测试,除了标题中提到的警告之外,几乎一切正常。
以下是Netbeans执行的命令行示例:
我不知道为什么,但命令中包含了两次一些属性,这会导致同样的警告出现两次。这是我在项目属性中做的事情:
如果我删除了“Additional options”,gtest就不能工作了,命令行变成了这样:
即使使用了cmake,我也在Clang中得到了警告(这次只出现了一次 :))。我还使用GCC 4.7进行了测试,并没有收到任何警告。这是我在一个cmake文件中为GCC使用的命令行:
因此,Clang似乎是问题所在。有人知道这个警告来自哪里以及如何移除它吗?这是一个Clang的bug吗?
感谢您的帮助。
以下是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](https://istack.dev59.com/nKxeB.webp)
clang++ -c -g -Wall -std=c++11 ...
。我该怎么做才能避免属性重复呢?即使使用了cmake,我也在Clang中得到了警告(这次只出现了一次 :))。我还使用GCC 4.7进行了测试,并没有收到任何警告。这是我在一个cmake文件中为GCC使用的命令行:
set (CMAKE_CXX_FLAGS "-Winline -Wall -Werror -pedantic-errors -pthread -std=c++11")
因此,Clang似乎是问题所在。有人知道这个警告来自哪里以及如何移除它吗?这是一个Clang的bug吗?
感谢您的帮助。
-lgtest
是一个链接器指令,用于链接gtest库。它不应该出现在CMAKE_CXX_FLAGS
中,我希望它(或代表它的变量)出现在类似target_link_libraries
调用或者add_executable
中。而且我不使用NetBeans,但我希望这个选项应该属于"Linker"菜单而不是"C++ Compiler"菜单。 - Fraserset
命令中的-lgtest
。感谢你的评论[+1]。 - Gabriel L.