GoogleMock и GoogleTest в Visual Studio 2010 - PullRequest
1 голос
/ 29 июня 2010

Кто-нибудь успешно построил gmock и gtest в Visual Studio 2010? Я пытался с версией 1.5.0, но я получаю только непонятные ошибки компиляции.

Ответы [ 2 ]

6 голосов
/ 30 ноября 2010

Я нашел эту тему в группах Google о проблемах, обнаруженных при сборке gmock-1.5.0 под VS2010. Следуя теме, я создал короткий файл readme, который работал для меня, так что вот он:

  • Загрузите gmock 1.5.0 с Google Mock .
  • Извлечь в папку библиотеки на компьютере (например, C: \ Libs \ gmock-1.5.0). Отныне эта папка будет обозначаться как «GMOCK_ROOT».
  • Откройте VS2010 и загрузите решение: GMOCK_ROOT \ msvc \ gmock.sln. Пусть VS преобразовать его из VS2008 в VS2010. Внимание! НЕ дважды щелкайте файл решения в папке GMOCK_ROOT \ msvc. Это привело к плохому преобразованию.
  • Выполните следующие изменения в источниках в соответствии с потоком :

    • в проекте gmock -> Личные файлы заголовков -> gmock-internal-utils.h:

      • строки 201, 202: закомментируйте функции «Помощник»:

      char Helper(To);

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

      • строки 210-219: заменить весь #ifdef..#endif раздел на:

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

    • в проекте gmock_test -> Исходные файлы -> gmock-printers_test.cc, строка 848: выполнить явное приведение аргумента NULL к void*, иначе VS автоматически сочтет, что это пустое значение типа int. Результирующая строка должна выглядеть так:

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

      1. Постройте решение. Это должно привести к 4 предупреждениям, которые, как описано ниже, (вероятно) в порядке.

Надеюсь, это поможет,

Боаз


Предупреждение компилятора VS2010 из шага 5 (см. Примечания в конце):

Предупреждение 1, предупреждение C4996: 'std :: _ Copy_impl': вызов функции с параметры, которые могут быть небезопасными - это вызов полагается на вызывающего, чтобы проверить что переданные значения верны. к отключите это предупреждение, используйте -D_SCL_SECURE_NO_WARNINGS. Смотрите документацию о том, как использовать Visual C ++ 'Проверенные итераторы' C: \ Program Files (x86) \ Microsoft Visual Studio 10.0 \ VC \ include \ xutility 2227 1

Предупреждение 2, предупреждение C4996: 'std :: _ Copy_impl': вызов функции с параметры, которые могут быть небезопасными - это вызов полагается на вызывающего, чтобы проверить что переданные значения верны. к отключите это предупреждение, используйте -D_SCL_SECURE_NO_WARNINGS. Смотрите документацию о том, как использовать Visual C ++ 'Проверенные итераторы' C: \ Program Files (x86) \ Microsoft Visual Studio 10.0 \ VC \ include \ xutility 2227 1

Предупреждение 4, предупреждение C4413: 'Станд :: tr1 :: _ Cons_node <_Car, _Cdr> :: _ Значение' : ссылочный элемент инициализируется в временный, который не сохраняется после конструктор выходит из C: \ Program Files (x86) \ Microsoft Visual Studio 10.0 \ VC \ include \ tuple 137 1

Предупреждение 3, предупреждение C4373: 'Тестирование :: gmock_generated_function_mockers_test :: MockFoo :: TakesConst': виртуальные функции переопределяют 'Тестирование :: gmock_generated_function_mockers_test :: FooInterface :: TakesConst', предыдущие версии компилятора делали не переопределять только параметры отличается постоянным / изменчивым квалификаторы C: \ Libs \ gmock-1.5.0 \ test \ gmock-generated-function-mockers_test.cc 133 1

Замечания относительно предупреждений:

  1. Предупреждения 1,2 о копировании () в xutility устарели из-за безопасности. Поскольку фиктивная библиотека не является частью производственной версии, это нормально для меня.
  2. Предупреждение 4 в порядке в соответствии с потоком .
  3. Предупреждение 3: не уверен, но, похоже, все работает хорошо.
0 голосов
/ 11 ноября 2015

если у кого-то есть проблема с созданием самого решения gmock, то есть он не может сгенерировать .lib-файлы, это сделал для меня (vs 2015):

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

gmock_config.props содержит устаревшее определение GTestDir: <GTestDir>../../gtest</GTestDir>

Замените его на <GTestDir>../../../googletest</GTestDir>, и вы должен пройти мимо вашей ошибки.

По крайней мере, библиотеки были скомпилированы, но я все равно получил ошибку gmock_test, несмотря на предложенные там изменения.

...