Pregunta

¿Alguien ha construido con éxito gmock y GTEST en Visual Studio 2010? He probado con la versión 1.5.0, pero solo me dan errores de compilación incomprensibles.

¿Fue útil?

Solución

he encontrado este hilo Google en grupos sobre los problemas encontrados en la construcción de gmock-1.5.0 bajo VS2010. Siguiendo el hilo, he creado un archivo readme corto, lo que funcionó para mí, así que aquí está:

  • Descargar gmock 1.5.0 de Google Mock .
  • Extracto de carpeta de la biblioteca en la máquina (por ejemplo, C: \ Liberaciones \ gmock-1.5.0). A partir de ahora, esta carpeta se reffered como 'GMOCK_ROOT'.
  • Abrir VS2010, y cargar la solución: GMOCK_ROOT \ msvc \ gmock.sln. Deje VS convertirlo de VS2008 a VS2010. Importante! NO haga doble clic en el archivo de solución bajo GMOCK_ROOT \ msvc. Esto dio lugar a una mala conversión.
  • Realizar los siguientes cambios en las fuentes de acuerdo con la hilo :

    • en gmock proyecto -> archivos de cabecera privada -> gmock-interno-utils.h:

      • líneas 201, 202: Comentario a cabo las funciones de ayuda '':

      char Helper(To);

      static char (&Helper(...))[2]; // NOLINT

      • Líneas 210-219: sustituir toda la sección #ifdef..#endif con:

      static const bool value = std::is_convertible<From, To>::value;

    • en gmock_test proyecto -> Archivos de origen -> gmock-printers_test.cc, la línea 848: realizar una conversión explícita del argumento NULL para void*, de otro modo VS se consideran automáticamente que es un int nula. La línea resultante debería tener este aspecto:

      t10(false, 'a', 3, 4, 5, 1.5F, -2.5, str, static_cast<void*>(NULL), "10");

      1. Construir la solución. Esto debe resultar en 4 cuidado, que, como se describe a continuación, son (probablemente) OK.

Espero que esta ayuda,

Boaz


VS2010 advertencias del compilador de la etapa 5 (vea las observaciones al final):

  

Advertencia 1 C4996 advertencia:   'Std :: _ Copy_impl': Llamada de Función con   parámetros que pueden ser peligrosas - este   llamada depende de la persona que llama para comprobar   que los valores pasados ??son correctos. A   desactivar esta advertencia, el uso   -D_SCL_SECURE_NO_WARNINGS. Consulte la documentación sobre cómo utilizar Visual C ++   C '' A cuadros Iteradores: \ Archivos de programa   (X86) \ Microsoft Visual Studio   10,0 \ VC \ include \ xutility 2227 1

     

Cuidado de 2 C4996 advertencia:   'Std :: _ Copy_impl': Llamada de Función con   parámetros que pueden ser peligrosas - este   llamada depende de la persona que llama para comprobar   que los valores pasados ??son correctos. A   desactivar esta advertencia, el uso   -D_SCL_SECURE_NO_WARNINGS. Consulte la documentación sobre cómo utilizar Visual C ++   C '' A cuadros Iteradores: \ Archivos de programa   (X86) \ Microsoft Visual Studio   10,0 \ VC \ include \ xutility 2227 1

     

Advertencia 4 C4413 advertencia:   'Std :: TR1 :: _ Cons_node <_Car, _Cdr> :: _ Valor'   : Miembro de referencia se inicializa a un   temporal que no persistir después   Las salidas del constructor C: \ Archivos de programa   (X86) \ Microsoft Visual Studio   10,0 \ VC \ include \ tupla 137 1

     

Advertencia 3 C4373 advertencia:   'Pruebas :: :: gmock_generated_function_mockers_test MockFoo :: TakesConst':   anulaciones de funciones virtuales   'Pruebas :: :: gmock_generated_function_mockers_test FooInterface :: TakesConst',   versiones anteriores del compilador hicieron   no sólo parámetros de anulación cuando   difirió en const / volátiles   Calificadores C: \ Liberaciones \ gmock-1.5.0 \ test \ gmock-generated-function-mockers_test.cc 133 1

Comentarios respecta a los avisos:

  1. Advertencias 1,2 están a punto Copiar () en xutility ser obsoleto debido a safty. A medida que la biblioteca de simulacro no es una parte de la versión de producción, esto está bien por mí.
  2. Warning 4 está bien de acuerdo con la hilo .
  3. Advertencia. 3: seguro, pero todo parece funcionar bien

Otros consejos

si alguien tiene un problema de la construcción de la solución gmock sí mismo, que no es capaz de generar los archivos .lib, esto lo hizo por mí (vs 2015):

https://groups.google.com/forum/#!topic/ googlemock / FaEAHedxpAQ

  

gmock_config.props contiene una definición anticuada de GTestDir:   <GTestDir>../../gtest</GTestDir>

     

Reemplazar con <GTestDir>../../../googletest</GTestDir> y   debe conseguir más allá de su error.

Al menos se compilaron las librerías, yo todavía tengo el error gmock_test embargo, a pesar del cambio sugerido allí.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top