近日需要使用Qt進行一個工具的編寫, 恰逢最近在學習使用gtest作為測試的首選, 本着熟能生巧, 能有機會多練習就多練習, 無機會創造機會也要上(/(ㄒoㄒ)/~~)的積極(折騰作死)態度, 開展了Qt使用gtest的折騰.
首先, 說明一下環境: win7+qt5.8.0(MinGW), gtest最新版本, 直接從GitHub拉取(https://github.com/google/googletest)
其次, 要使用gtest, 先要使用對應的編譯器編譯,這里由於使用的是MinGW版本的Qt, 所以gtest也要使用MinGW進行編譯, 不然編譯器無法正常連接gtest使用.下面是關於Qt編譯gtest的步驟:
1.在拉取下來的googletest目錄下建立一個gtest.pro(Qt project文件)[特別注明:當前gtest將gmock集成到gtest工程下了, 所以gtest的目錄下是有googletest目錄的], 如下圖:
2.編輯gtest.pro文件, 曾參考過網上一篇blog(這里)進行編輯, 但是編譯生成出來的是兩個.o文件和一個.exe文件, 並不是MinGW編譯出來的靜態庫.a文件. 后來的做法, 是先使用Qt新建一個靜態庫的工程, 然后拷貝這個新建的靜態庫工程的pro的內容到gtest.pro, 然后再按需更改, gtest.pro的更改后的內容如下圖:
圖中圈出來的內容為需要更改的部分
3.使用Qt打開gtest.pro工程, 構建之, Qt會在.pro的上一級目錄下生成對應的編譯目錄和輸出目錄(基於shadow build), 如下圖:
圖中可以看到gtest工程下已經集成了gmock工程
4.在輸出目錄下, 可以看到MinGW編譯出的gtest庫文件libgtest.a
編譯得到想要的gtest庫后, 開始使用在Qt環境下使用之.
1.使用Qt新建一個console的驗證工程gtestforqt
2.編輯gtestforqt.pro文件, 使其可以連接到我們編譯的gtest庫文件, 如下圖:
INCLUDEPATH 是增加對gtest頭文件的鏈接路徑
LIBS 是增加對gtest庫文件的鏈接路徑
注釋部分, 是使用絕對路徑, 不建議使用, 對各個機子的環境依賴太強.
建議使用下面的相對路徑(注意, 要包含pro文件在的當前文件夾在內..\gtestforqt\lib\Debug\,而不能直接使用.\lib\Debug\)
3.include gtest的文件件,並初始化gtest, 如下圖:
4.構建運行后, gtest成功執行:
5.增加一個TEST並運行, 如下圖
至此, Qt編譯gtest並使用gtest的工作已經折騰完成, 以此記錄, 以便后面自己查看和其他人查看(網上這方面的資料不多..或者是我沒查到 = .=!)