Googlemock и Googletest в Visual Studio 2010
-
01-10-2019 - |
Вопрос
Кто-нибудь успешно построил 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");
- Создайте решение. Это должно привести к 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,2 о копии () в ксытности устаревают из-за Safty. Поскольку библиотека издевательства не является частью добычи, это нормально.
- Предупреждение 4 ОК В соответствии с нить.
- Предупреждение 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, несмотря на то, что изменить, предложенные там.