2010-06-29 15 views
1

有沒有人在Visual Studio 2010中成功構建gmock和gtest?我已經嘗試過版本1.5.0,但我只會得到不可理解的編譯錯誤。Visual Studio 2010中的GoogleMock和GoogleTest

+0

沒有看到內容的錯誤,沒有多少人可以幫助你。 – VladLosev 2010-07-18 18:23:20

+0

您是否下載並使用CMake生成解決方案文件,然後編譯這些文件?這對我來說完美無瑕。 – Jan 2010-10-27 10:27:42

+0

谷歌測試1.6在Visual Studio 2010中完美地工作。也許試試1.6? – User 2011-06-28 20:13:54

回答

6

我發現這個thread在谷歌組關於在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下雙擊解決方案文件。這導致轉換錯誤。
  • 根據thread執行以下更改來源:

    • 在項目gmock

      - >私有頭文件 - > gmock內部-utils.h:

      • 線201 ,202:註釋掉 '幫手' 的功能:

      char Helper(To);

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

      • 線210-219:與更換整個#ifdef..#endif部分:項目gmock_test

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

    • - >源文件 - > 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");

    • 生成解決方案。這應該導致4個警告,如下所述,這些警告(可能)是確定的。

希望這有助於

波阿斯


步驟5 VS2010的編譯器警告(見末備註):

警告1警告C4996: 'std :: _ Copy_impl':與 函數調用可能不安全的參數 - 此 調用依賴於調用者檢查 傳遞的值是否正確。若要 禁用此警告,請使用 -D_SCL_SECURE_NO_WARNINGS。請參閱有關如何使用 '檢查的迭代器' C的Visual C++ 文檔:\ Program Files文件 (x86)的\微軟的Visual Studio 10.0 \ VC \包括\ xutility 2227 1

警告2警告C4996: 「的std :: _Copy_impl':與 函數調用可能不安全的參數 - 此 調用依賴於調用者檢查 傳遞的值是正確的。若要 禁用此警告,請使用 -D_SCL_SECURE_NO_WARNINGS。請參閱有關如何使用 '檢查的迭代器' C的Visual C++ 文檔:\ Program Files文件 (x86)的\微軟的Visual Studio 10.0 \ VC \包括\ xutility 2227 1

警告4警告C4413: 「的std :: TR1 :: _ Cons_node < _Car,_Cdr> :: _值」 :參考成員初始化爲 暫時不 構造後堅持退出C:\ Program Files文件 (x86)的\微軟的Visual Studio 10.0 \ VC \ include \ tuple 137 1

警告3警告C4373: 'te刺:: gmock_generated_function_mockers_test :: MockFoo :: TakesConst': 虛函數覆蓋 '測試:: gmock_generated_function_mockers_test :: FooInterface :: TakesConst', 以前的編譯器版本並 沒有覆蓋時的參數以const只 差異/揮發性 限定符C:\利布斯\ gmock-1.5.0 \測試\ gmock-generated-function-mockers_test.cc 133 1

關於警告

備註:

  1. 警告1,2-約爲複製()在xutility被棄用d你要安全。由於模擬庫不是產品發佈的一部分,這對我來說可以。
  2. 根據thread,警告4無誤。
  3. 警告3:不確定,但似乎一切正常。
+0

當你寫第210-221行時,我想你實際上是從#ifdef _MSC_VER到#endif // _ _MSV_VER(含)在這些行的附近。 – Jonathan 2011-01-09 09:46:29

+0

@Jonathan - 你是對的,謝謝。修復答案。 – bavaza 2011-01-10 10:14:57

0

如果任何人有建設gmock解決方案本身的問題,那是不能生成的。LIB文件,這爲我做(VS 2015):

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

gmock_config.props包含GTestDir的過時的定義: <GTestDir>../../gtest</GTestDir>

<GTestDir>../../../googletest</GTestDir>替換它,你 應該讓過去你的錯誤。

至少libs被編譯,儘管在那裏提出了更改,但我仍然得到了gmock_test錯誤。