Вопрос

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

Это было полезно?

Решение

я нашел это нить В 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: выполнить явное литье нулевого аргумента void*, в противном случае VS автоматически расценит это NULL INT. Полученная линия должна выглядеть так:

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

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

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

Боаз


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

ПРЕДУПРЕЖДЕНИЕ 1 ПРЕДУПРЕЖДЕНИЕ C4996: 'std :: _ copy_impl': Функция Вызов с параметрами, которые могут быть небезопасными - этот вызов опирается на вызывающем абонете, чтобы убедиться, что прошедшие значения верны. Чтобы отключить это предупреждение, используйте -d_scl_secure_no_warnings. Смотрите документацию о том, как использовать Visual C ++ 'Checked Theerators' C: Program Files (x86) Microsoft Visual Studio 10.0 VC включают xutility 2227 1

Предупреждение 2 ПРЕДУПРЕЖДЕНИЕ C4996: 'std :: _ copy_impl': Функция Вызов с параметрами, которые могут быть небезопасными - этот вызов опирается на вызывающем абонете, чтобы убедиться, что прошедшие значения верны. Чтобы отключить это предупреждение, используйте -d_scl_secure_no_warnings. Смотрите документацию о том, как использовать Visual C ++ 'Checked Theerators' C: Program Files (x86) Microsoft Visual Studio 10.0 VC включают xutility 2227 1

Предупреждение 4 ПРЕДУПРЕЖДЕНИЕ C4413: 'STD :: TR1 :: _ CONSS_NODE <_CAR, _CDR> :: _ Value': Справочный элемент инициализируется во временном, который не сохраняется после того, как конструктор выходит C: Program Files (x86) Microsoft Visual Студия 10.0 vc включает Tupple 137 1

ПРЕДУПРЕЖДЕНИЕ 3 ПРЕДУПРЕЖДЕНИЕ C4373: «Тестирование :: gmock_generated_function_mockers_test :: mockfoo :: tableconst ': Тестирование виртуальной функции" :: gmock_generated_function_mockers_test :: foointerface :: tableconst', предыдущие версии компилятора не отменяют, когда параметры отличаются только Const / Folatile Квалификаторы C: libs gmock-1.5.0 test gmock-generated-function-mockers_test.ccc 133 1

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

  1. Предупреждения 1,2 о копии () в ксытности устаревают из-за Safty. Поскольку библиотека издевательства не является частью добычи, это нормально.
  2. Предупреждение 4 ОК В соответствии с нить.
  3. Предупреждение 3: Не уверен, но все, кажется, хорошо работает.

Другие советы

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

https://groups.google.com/forum/#!Topic/googlemock/faeahedxpaq.

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

Заменить его с <GTestDir>../../../googletest</GTestDir> И вы должны пройти через свою ошибку.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top