1

有没有人在 Visual Studio 2010 中成功构建了 gmock 和 gtest?我已经尝试使用 1.5.0 版本,但我只得到难以理解的编译错误。

4

2 回答 2

6

我在 google 群组中发现了这个关于在 VS2010 下构建 gmock-1.5.0 时发现的问题的线程。在线程之后,我创建了一个简短的自述文件,它对我有用,所以这里是:

  • 从Google Mock下载 gmock 1.5.0 。
  • 解压到机器上的库文件夹(例如 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 行:注释掉“Helper”函数:

      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 会自动将其视为 null int。结果行应如下所示:

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

      1. 构建解决方案。这应该会导致 4 个警告,如下所述,它们(可能)是可以的。

希望这可以帮助,

波阿斯


来自第 5 步的 VS2010 编译器警告(请参阅末尾的备注):

警告 1 警告 C4996:“std::_Copy_impl”:带有可能不安全参数的函数调用 - 此调用依赖调用者检查传递的值是否正确。要禁用此警告,请使用 -D_SCL_SECURE_NO_WARNINGS。请参阅有关如何使用 Visual C++ 'Checked Iterators' 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++ 'Checked Iterators' C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xutility 2227 1 的文档

警告 4 警告 C4413: 'std::tr1::_Cons_node<_Car,_Cdr>::_Value' : 引用成员被初始化为一个临时的,在构造函数退出后不会持续存在 C:\Program Files (x86)\Microsoft Visual工作室 10.0\VC\include\tuple 137 1

警告 3 警告 C4373:'testing::gmock_generated_function_mockers_test::MockFoo::TakesConst':虚函数覆盖 'testing::gmock_generated_function_mockers_test::FooInterface::TakesConst',当参数仅相差 const/volatile 时,以前版本的编译器不会覆盖限定符 C:\Libs\gmock-1.5.0\test\gmock-generated-function-mockers_test.cc 133 1

关于警告的备注:

  1. 警告 1,2 是关于 xutility 中的 Copy() 因安全而被弃用的。由于模拟库不是生产版本的一部分,这对我来说是可以的。
  2. 根据线程,警告 4 是可以的。
  3. 警告 3:不确定,但一切似乎都运行良好。
于 2010-11-30T14:30:27.753 回答
0

如果有人在构建 gmock 解决方案本身时遇到问题,即无法生成 .lib 文件,这对我来说是这样做的(与 2015 年相比):

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

gmock_config.props 包含 GTestDir 的过时定义: <GTestDir>../../gtest</GTestDir>

将其替换为<GTestDir>../../../googletest</GTestDir>,您应该可以克服错误。

至少编译了库,尽管在那里提出了更改,但我仍然得到 gmock_test 错误。

于 2015-11-11T16:14:04.463 回答