![](/img/trans.png)
[英]Makefile issue with Class template: clang warning linker input unused
[英]clang: warning: -lgtest: 'linker' input unused
我正在用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
我不知道為什么,但該命令包含兩個屬性,當然會給出相同的警告兩次。 這就是我在項目屬性中所做的: 如果我刪除附加選項,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 bug嗎?
謝謝你的幫助。
我要感謝@Fraser的幫助,幫助我找到刪除警告的方法。 基本上,不是在C ++編譯器部分的附加選項中寫入-pedantic-errors -lgtest -pthread
而是給出重復警告,這些屬性應該在項目的鏈接器部分中。
因此,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來說都是。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.