GoogleMock e GoogleTest in Visual Studio 2010
-
01-10-2019 - |
Domanda
Qualcuno ha costruito con successo gmock e GTEST in Visual Studio 2010? Ho provato con la versione 1.5.0, ma ho solo errori di compilazione incomprensibili.
Soluzione
Ho trovato questo in google gruppi su problemi trovati nella costruzione gmock-1.5.0 sotto VS2010. Seguendo il filo, ho creato un breve file readme, che ha lavorato per me, ecco che è:
- Scarica gmock 1.5.0 da Google Mock .
- Estratto di cartella della libreria sulla macchina (ad esempio C: \ Libs \ gmock-1.5.0). D'ora in poi, questa cartella sarà A riferiti come 'GMOCK_ROOT'.
- Apri VS2010, e caricare la soluzione: GMOCK_ROOT \ msvc \ gmock.sln. Lasciate VS convertirlo da VS2008 a VS2010. Importante! Non fare doppio clic sul file di soluzione sotto GMOCK_ROOT \ msvc. Ciò ha provocato una cattiva conversione.
-
Eseguire le seguenti modifiche alle fonti secondo il filo :
-
nel progetto gmock -> File di intestazione privata -> gmock-interno-utils.h:
- linee 201, 202: commento delle funzioni 'aiuto':
char Helper(To);
static char (&Helper(...))[2]; // NOLINT
- linee 210-219: sostituire l'intera sezione
#ifdef..#endif
con:
static const bool value = std::is_convertible<From, To>::value;
-
nel progetto gmock_test -> File di origine -> gmock-printers_test.cc, linea 848: eseguire un cast esplicito dell'argomento NULL per
void*
, altrimenti VS riguarderà automaticamente è un int nullo. La linea risultante dovrebbe essere simile a questo:t10(false, 'a', 3, 4, 5, 1.5F, -2.5, str, static_cast<void*>(NULL), "10");
- Generare la soluzione. Ciò dovrebbe tradursi in 4 avvertimenti, che, come descritto di seguito, sono (probabilmente) OK.
-
Spero che questo aiuti,
Boaz
VS2010 compilatore avvertimenti dal punto 5 (vedi note alla fine):
Attenzione 1 avvertimento C4996: 'Std :: _ Copy_impl': chiamata di funzione con parametri che possono essere pericolosi - questo chiamata si basa sul chiamante per controllare che i valori passati siano corretti. Per disattivare questo avviso, l'uso -D_SCL_SECURE_NO_WARNINGS. Vedere la documentazione su come utilizzare Visual C ++ C 'Controllato Iteratori': \ Program Files (X86) \ Microsoft Visual Studio 10.0 \ VC \ include \ xutility 2227 1
Attenzione 2 C4996 di avviso: 'Std :: _ Copy_impl': chiamata di funzione con parametri che possono essere pericolosi - questo chiamata si basa sul chiamante per controllare che i valori passati siano corretti. Per disattivare questo avviso, l'uso -D_SCL_SECURE_NO_WARNINGS. Vedere la documentazione su come utilizzare Visual C ++ C 'Controllato Iteratori': \ Program Files (X86) \ Microsoft Visual Studio 10.0 \ VC \ include \ xutility 2227 1
Attenzione 4 C4413 di avviso: 'Std :: tr1 :: _ Cons_node <_Car, _Cdr> :: _ Valore' : Organo di riferimento viene inizializzato su un temporanea che non persistere dopo il costruttore uscite C: \ Program Files (X86) \ Microsoft Visual Studio 10.0 \ VC \ include \ tuple 137 1
Attenzione 3 C4373 di avviso: 'Test :: gmock_generated_function_mockers_test :: :: MockFoo TakesConst': sostituzioni funzione virtuale 'Test :: gmock_generated_function_mockers_test :: :: FooInterface TakesConst', le versioni precedenti del compilatore hanno fatto non solo di override quando i parametri differivano da const / volatili qualificazioni C: \ Libs \ gmock-1.5.0 \ test \ gmock-generated-function-mockers_test.cc 133 1
Osservazioni relative avvertenze:
- avvertenze 1,2 sono in procinto di copia () in xutility essere sconsigliato a causa di safty. Come la libreria finta non è una parte della versione di produzione, questo è OK da me.
- Attenzione 4 è secondo OK per il filo .
- Avvertimento 3:. Non sono sicuro, ma tutto sembra funzionare bene
Altri suggerimenti
se qualcuno ha un problema costruire la soluzione gmock in sé, che non è in grado di generare i file .lib, questo ha fatto per me (vs 2015):
https://groups.google.com/forum/#!topic/ googlemock / FaEAHedxpAQ
gmock_config.props contiene una definizione di obsoleto di GTestDir:
<GTestDir>../../gtest</GTestDir>
Sostituirlo con
<GTestDir>../../../googletest</GTestDir>
e si dovrebbe andare oltre il vostro errore.
Almeno le librerie sono state compilate, ho ancora ottenuto l'errore gmock_test però, nonostante il cambio ci ha suggerito.