GoogleMock und GoogleTest in Visual Studio 2010
-
01-10-2019 - |
Frage
Hat jemand erfolgreich gmock und Gtest in Visual Studio 2010 gebaut? Ich habe versucht, mit der Version 1.5.0, aber ich nur unverständlich Kompilierungsfehlern erhalten.
Lösung
Ich fand diesen Faden in google Groups über Probleme gefunden, wenn gmock-1.5.0 unter VS2010 zu bauen. Nach dem Thread habe ich eine kurze Readme-Datei erstellt, die für mich gearbeitet, so ist es hier:
- Download gmock 1.5.0 von Google Mock .
- Extract in Bibliothek Ordner auf der Maschine (zum Beispiel C: \ Libs \ gmock-1.5.0). Von nun an wird dieser Ordner als ‚GMOCK_ROOT‘ reffered wird.
- Öffnen VS2010, und laden Sie die Lösung: GMOCK_ROOT \ msvc \ gmock.sln. Lassen VS es von VS2008 zu VS2010 konvertieren. Wichtig! DO NOT doppelklicken Sie auf die Lösung Datei unter GMOCK_ROOT \ msvc. Das in einem schlechten Conversion geführt.
-
Führen Sie die folgenden Änderungen an Quellen gemäß der Thread :
-
Projekt gmock -> Privat Header-Dateien -> gmock-internal-utils.h:
- Linien 201, 202: Kommentar aus den 'Helfer' Funktionen:
char Helper(To);
static char (&Helper(...))[2]; // NOLINT
- Linien 210-219: Ersetzen Sie den gesamten
#ifdef..#endif
Abschnitt mit:
static const bool value = std::is_convertible<From, To>::value;
-
in Projekt gmock_test -> Quelldateien -> gmock-printers_test.cc, Zeile 848: ein explizites Gießen des NULL Arguments
void*
ausführen, sonst VS wird automatisch betrachtet es ein Null-Int. Die sich ergebende Linie sollte wie folgt aussehen:t10(false, 'a', 3, 4, 5, 1.5F, -2.5, str, static_cast<void*>(NULL), "10");
- Erstellen Sie die Lösung. Dies sollte in 4 Warnungen führen, die, wie unten beschrieben, sind (wahrscheinlich) OK.
-
Hope, das hilft,
Boaz
VS2010 Compiler-Warnungen aus Schritt 5 (siehe Bemerkungen am Ende):
Warnung 1 Warnung C4996: 'Std :: _ Copy_impl': Funktionsaufruf mit Parameter, die nicht sicher sein kann - dies Anruf verlässt sich auf den Anrufer zu überprüfen dass die übergebenen Werte korrekt sind. Zu Deaktivieren Sie diese Warnung, Verwendung -D_SCL_SECURE_NO_WARNINGS. Siehe Dokumentation, wie Visual C ++ verwenden 'Checked Iteratoren' C: \ Program Files (X86) \ Microsoft Visual Studio 10.0 \ VC \ include \ xutility 2227 1
Warnung 2 Warnung C4996: 'Std :: _ Copy_impl': Funktionsaufruf mit Parameter, die nicht sicher sein kann - dies Anruf verlässt sich auf den Anrufer zu überprüfen dass die übergebenen Werte korrekt sind. Zu Deaktivieren Sie diese Warnung, Verwendung -D_SCL_SECURE_NO_WARNINGS. Siehe Dokumentation, wie Visual C ++ verwenden 'Checked Iteratoren' C: \ Program Files (X86) \ Microsoft Visual Studio 10.0 \ VC \ include \ xutility 2227 1
Warnung 4 Warnung C4413: 'Std :: tr1 :: _ Cons_node <_Car, _Cdr> :: _ Value' : Referenzelement ist mit einem initialisierten vorübergehend das bleibt nicht nach der Konstruktor Ausfahrten C: \ Program Files (X86) \ Microsoft Visual Studio 10.0 \ VC \ include \ Tupel 137 1
Warnung 3 Warnung C4373: 'Prüfung :: gmock_generated_function_mockers_test :: MockFoo :: TakesConst': virtuelle Funktion überschreibt 'Prüfung :: gmock_generated_function_mockers_test :: FooInterface :: TakesConst', vorherige Versionen des Compilers tat nur nicht überschreiben, wenn die Parameter durch const unterschied / volatile Qualifier C: \ Libs \ gmock-1.5.0 \ test \ gmock-generated-function-mockers_test.cc 133 1
Erläuterungen bezüglich Warnungen:
- Warnungen 1,2 zu kopieren sind () in xutility aufgrund Safty veraltet ist. Da die Mock-Bibliothek nicht ein Teil der Produktions-Release, das ist in Ordnung von mir.
- Warnung 4 ist OK nach dem Thread .
- Warnung. 3: nicht sicher, aber alles scheint gut zu funktionieren
Andere Tipps
, wenn jemand ein Problem hat den Aufbau der gmock Lösung selbst, die die LIB-Dateien können nicht erzeugen ist, das hat es für mich (vs 2015):
https://groups.google.com/forum/#!topic/ googlemock / FaEAHedxpAQ
gmock_config.props enthält eine veraltete Definition von GTestDir:
<GTestDir>../../gtest</GTestDir>
Bitte ersetzen Sie es
<GTestDir>../../../googletest</GTestDir>
und Sie sollte Ihre Vergangenheit Fehler.
Mindestens die Libs zusammengestellt wurden, habe ich noch die gmock_test Fehler bekam aber trotz der Änderung dort vorgeschlagen.