clang: Warnung: -lgtest: 'linker' input unbenutzt
Entwickle ich Anwendungen in C++11 und mein compiler CLang++ 3.3. Ich benutze auch Netbeans IDE 7.3 auf Linux Mint 14.
Alle meine tests sind fertig mit GoogleTest (gtest-1.6.0) und fast alles ist in Ordnung, außer der Warnung erwähnt, in der Titel von diesem post.
Hier ist die Befehlszeile ausgeführt von netbeans als Beispiel:
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
Ich weiß nicht, warum, aber der Befehl enthält zweimal einige Attribute, die bietet die gleiche Warnung zweimal natürlich. Dies ist, was ich in den Projekt-Eigenschaften :
Wenn ich entfernen Sie die Zusätzlichen Optionen, gtest nicht funktioniert, und die Kommandozeile wird so etwas wie dieses : clang++ -c -g -Wall -std=c++11 ...
. Was sollte ich tun, um nicht einige Attribute werden Duplikate ?
Gut, auch mit cmake, ich bekam die Warnung mit Clang (die angezeigt wird, sobald diese Zeit :)). Ich habe auch getestet mit GCC 4.7 und ich bekam keine Warnung. Hier ist die Befehlszeile, die ich verwenden in einem cmake-Datei für den GCC :
set (CMAKE_CXX_FLAGS "-Winline -Wall -Werror -pedantic-errors -pthread -std=c++11")
So, das Geräusch scheint das problem zu sein. Ist jemand wissen, wo diese Warnung kommt und wie es zu entfernen ? Ist dieses Geräusch bug ?
Vielen Dank für Ihre Hilfe.
-lgtest
ist ein linker-Anweisung zu verknüpfen gtest Bibliothek. Sollte es nicht erscheinen inCMAKE_CXX_FLAGS
, würde ich erwarten, dass Sie (oder eine variable Vertretung) zu erscheinen, in der so etwas wie eintarget_link_libraries
nennen oder sogaradd_executable
. Und ich glaube nicht, verwenden Sie NetBeans, aber ich würde erwarten, dass diese option fallen unter die "Linker" - Menü statt "C++ Compiler" Menü.- du hast Recht. Ich bearbeitet meine post zu löschen, die
-lgtest
imset
Befehl. Danke für den Kommentar[+1]. - So ist
-lgtest
Weg aus der "Zusätzliche Optionen" jetzt? Haben Sie Hinzugefügtgtest
als Abhängigkeit in das "Libraries" - Bereich? - Habe das problem behoben mit Ihre Hilfe, ich danke Ihnen sehr. Ich habe gerade gebucht, meine Antwort mit Erklärungen. Wenn andere Leute das gleiche Problem wie ich, werden es einfacher für Sie, um es zu lösen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Möchte ich danken @Fraser für seine Hilfe, das hilft mir, herauszufinden, die Art und Weise zu entfernen Sie die Warnungen. Im Grunde, statt zu schreiben
-pedantic-errors -lgtest -pthread
in die Weitere Optionen für den C++ - compiler Abschnitt gibt eine doppelte Warnung, diese Attribute sollte im Linker Abschnitt des Projekts.So, der Weitere Optionen in den C++ - compiler Abschnitt leer gelassen werden. Nun, ich kann die -Werror-Attribut ohne jedes problem.
Auch, in den cmake-Datei, die Zeile
links die gtest Bibliothek in das Projekt. Also, keine Notwendigkeit der
-lgtest
imsowohl für GCC und Clang.