GoogleTest 之路1-Generic Build Instructions編譯指導總方案

準備工做linux

爲了在你的測試中使用GoogleTest, 你必須讓你的編譯系統 知道到哪裏去尋找GoogleTest 的頭文件和源文件。git

具體的方法只能依賴於你具體使用的哪一種編譯系統了,通常來說這個很是容易直接的。github

編譯windows

若是你的GoogleTest 放在${GTEST_DIR} 目錄下面。(使用 Visual Studio 和 Xcode)編譯它產生一個庫。xcode

${GTEST_DIR}/src/gtest-all.cc

下面是對通用的編譯方法解釋,直接略過,參看https://github.com/google/googletest/blob/master/googletest/README.md測試

重點翻譯ui

CMake方法google

下載下來的Google Test 裏面包含 CMake 編譯腳本,只要是支持C標準的平臺均可以使用。spa

若是沒有安裝CMake的話,戳下面連接下載並安裝: http://www.cmake.org/.翻譯

CMake 會根據你代碼所在的平臺的編譯器等環境 生成native的makefile 文件,固然若是你的平臺安裝多個編譯器,你也能夠在Cmake 腳本里面指定。

你既能夠把Google Test 編譯成一個 獨立的平臺(Standalone CMake Project),也能夠和你要測的代碼合併成一個平臺。[原文:it can be incorporated into an existing CMake build for another project.]

獨立的CMake Project

若是想把Google Test編譯成一個獨立的Project,典型的workflow以下:

mkdir mybuild       # Create a directory to hold the build output.
cd mybuild
cmake ${GTEST_DIR}  # Generate native build scripts.

若是想編譯Google Test 的Samples,你應該把上面的最後一句話換成以下:

cmake -Dgtest_build_samples=ON ${GTEST_DIR}

若是你使用的是 *nix (各類linux系統),你應當會在當前目錄下面看到一個Makefile文件生成,Just do it, 沒錯輸入 make.

若是你是用的是微軟的Visual Studio 而且在windows 上面,gtest.sln 和幾個.vcproj 文件生成。而後用visual studio 編譯它。

若是你是有錢人,用的是喬布斯的 MAC OS X 上面的 Xcode,建議你把它砸了,不.... .xcodeproj 文件生成了。

Incorporating Into An Existing CMake Project

和已有CMake Project 合併

若是你想在一個已有的CMake Project中使用 gtest(如下都叫gtest了,打字太累了),那麼就給你介紹一個更強大和靈活的方法啦。

首先呢,你得在你的CMakefile 文件裏面加點東西咯。固然是 add_subdirectory().   這樣 cmake 在讀到這句話的時候,就會說"臥槽"還有gtest 那麼大一坨沒有編譯呢,繼續工做吧。這種方法在windows 上面很是有用。想讓 main build 用上 gtest這個靈丹妙藥,有如下幾種不一樣的方法:

1. 手動從github上面下載下來,把他放到某個已知的位置,但這種方法太不靈活了,你想持續集成你的系統,就GG了

2. 把gtest目錄嵌入到 main project's source tree裏面。這一般是一個簡單有效的方法,可是若是 gtest也更新了呢?你又想用gtest裏面最新的功能。有些組織也不推薦用這種方法。

3. 加一個git 子模塊到gtest裏。這一般也是不合適的。

4.  使用 CMake 下載 gtest 做爲 編譯的準備步驟。這有點複雜可是沒有其餘方法太多的限制。

方法就不介紹了,反正已經實現了看原文:https://github.com/google/googletest/blob/master/googletest/README.md

推薦另外一個代碼:https://github.com/bast/gtest-demo, 對於理解 cmake 比較有幫助

 

Multi-threaded Tests

Avoiding Macro Name Clashes

相關文章
相關標籤/搜索