2011-03-09 109 views
10

我的需求很簡單。我必須在使用MinGW和msys的Windows上編譯和使用googletest。有沒有人有這樣的經驗?如何使用mingw與msys在Windows上編譯googletest?

感謝您的回答。

+0

請說明發生了什麼問題。 – LumpN 2011-03-09 17:08:40

+0

我已經取得了一些進展。它似乎不能沒有我沒有的python安裝。我現在正在試圖解決它。 – 2011-03-09 18:20:43

回答

12

我花了一些時間,但我明白了。這是面向同樣問題的人的指南。

爲了能夠編譯GoogleTest在Windows按照此說明:

  1. 我假設你有MinGW的MSYS與istalled。

  2. 從官方網站http://www.cmake.org/下載並安裝CMake。使用Win32安裝程序 版本。完成安裝過程後,將可執行文件 「xxx/CMake/bin」複製到「xxx/MinWG/bin」。

  3. http://www.python.org/下載並安裝Python。 Windows安裝程序再次執行 的工作。 完成安裝過程後,將「python.exe」 表單python文件夾複製到 「xxx/MinWG/bin」。

  4. http://code.google.com/p/googletest/下載最新穩定的GoogleTest並將其解壓縮到某個文件夾中。

  5. 運行MSYS終端並執行以下命令。

    cd xxx/gtest-x.x.x 
    cmake -G "MSYS Makefiles" 
    make 
    
  6. 如果從並行線程編譯錯誤遵循these說明。

  7. 將包含文件夾「xxx/gtest-x.x.x/include」複製到MinGW gcc include中。 將庫文件「xxx/gtest-x.x.x/*。a」複製到MinGW gcc庫中。

  8. 當您編譯測試時,向gcc添加「-lgtest」參數。

編輯 評論家是正確的。可執行文件的處理對我來說很有效,但通常這不是一種好的做法。嘗試使用symbolic link代替。

+0

爲什麼要複製而不是符號鏈接這些可執行文件? – mbx 2011-03-15 09:16:45

+0

實際上,CMake和Python都不是靜態構建的,因此當它們從msys shell調用時,它們都不起作用(崩潰和無限循環)。 – mbx 2011-03-15 09:31:13

1

作爲替代方案,使用通常的MSYS/Mingw make也可以構建googletest。

因此,這裏是我的另一種方式:

  1. 確保MSys的/ MingW平臺上安裝了Windows和PATH環境設置爲它

  2. 打開一個cmd窗口 - 你可以設置PATH這裏明確以及

  3. CD解壓的目錄googletest

  4. 呼叫配置Wi (部分MSys):sh configure

  5. 請致電make - >libgtest.a應該建立。它被放置在您的googletest目錄中lib/.libs子目錄

  6. 請參閱googletest的README以瞭解如何將libgtest.a集成到您的系統。另請參閱如何編譯googletest wiki中的googletest primer。或者,爲gcc 指定庫路徑,並添加-lgtest以鏈接您的測試項目可執行文件。

  7. 當使用ASSERT_DEATH宏來檢查斷言在您的測試代碼(這意味着斷言在您的lib或應用程序,而不是在googletest),撥打SetErrorMode - 例如主:

    #include <windows.h> 
    #include "gtest/gtest.h" 
    
    int main (int argc, char** argv) 
    { 
        // this prevents annoying error message boxes popping up 
        // when assert is called in your program code 
        SetErrorMode(SEM_NOGPFAULTERRORBOX); 
        ::testing::InitGoogleTest(&argc, argv); 
        return RUN_ALL_TESTS(); 
    } 
    
1

你不」只要你有你的路徑,就需要複製二進制文件。安裝python和CMake。在你的msys(MinGW控制檯)中測試它們

which cmake 
which python 

如果你看到路徑,那麼你有二進制文件。如果沒有,添加自己的路徑,你的環境變量> PATH或MSYS內只需要更新(更新安裝路徑,如果需要的話)

export PATH=$PATH:/c/Program Files (x86)/CMake/bin/cmake.exe:/c/Python27/python.exe 

然後你就可以建立的建議:

cd xxx/gtest-x.x.x 
cmake -G "MSYS Makefiles" 
make 

測試,如果一切正常:

cd make 
make 
./sample1_unittest.exe 
2

要建立一個沒有cmake的/蟒蛇libgtest.a,但只用MinGW的製作,GTEST現在有一個普通的舊的makefile中有一個「讓」的文件夾。

  1. 確保,MinGW的\ bin在路徑(嘗試運行 'G ++' 或東西)。
  2. 輸入gtest'googletest \ make'文件夾並運行'make'。
  3. 要測試,運行'sample1_unittest'(應該出現gtest樣本測試輸出)。
  4. 要生成庫 'libgtest.a',運行 'AR -rv libgtest.a GTEST-all.o中'

創建的庫是不產生DLL的全靜態庫。

這應該是全部。

順便說一句,這也適用於建設googlemock,只需輸入googlemock文件夾,而不是googletest,並按照相同的程序。

+0

謝謝@ jesper-matthiesen它的工作。如果有人面臨ld.exe的錯誤,則不能找到lpthread。嘗試運行mingw-get install libpthreadgc-dev,如[link](http://mingw-users.1079350.n2.nabble.com/GCC-doesn-t-work-quot-ld-exe-cannot-發現-lpthread-QUOT-td7584243.html)。謝謝 – 2018-02-23 20:21:49