我是新來的CMake,我正在使用Google測試框架。我一直在尋找更復雜的結合CMake和Google測試框架的例子,但是我沒有發現很多運氣。我希望有人能夠提供他們對我所設置的設置的看法,併爲我回答一個問題。這裏是基本的項目結構:單元測試輸出和項目結構建議--- CMake + Google測試框架
ProjectFolder
-CMakeLists.txt
/建造
/包括
- 所有我的.h文件
/src目錄
-CMakeLists.txt
-all我的.cpp文件
/測試
-CMakeLists.txt
/GTEST
-Google的的CMakeLists.txt
/嘲笑
-CMakeLists.txt
-cpp和h mocks的文件
簡而言之,根cmake文件將src和測試添加爲子目錄。 src cmake文件將cpp文件放入庫中。測試cmake文件添加mocks和gtest作爲子目錄。模擬cmake文件將其所有cpp文件放到第二個庫中。最後,tests文件夾中的cmake文件將src庫,google庫和mocks庫與單元測試可執行文件鏈接起來。
我最終得到的是一些可執行文件:objA_unittest,objB_unittest等
有幾件事情:
打造這一切,仍然保持我的項目目錄還算乾淨我的CD到構建文件夾並運行「cmake ..」這似乎工作得很好,我打算配置vim總是運行make該文件夾。有沒有人有任何提示,或看到這種方法的任何問題?
我不喜歡在我的項目文件夾中嵌套谷歌庫的想法(特別是如果我最終有幾個使用它的項目),但因爲它似乎高度建議你不要預編譯谷歌圖書館我看不出這個方法。但是,如果有人知道更好的方法,我很樂意聽到它。
運行測試。我喜歡我所要做的就是運行「make test」來用ctest執行所有的單元測試。但是,我發現我不太喜歡輸出。每個單元測試可執行文件包含幾個不同的單元測試直接運行這些提供了Google非常詳細的反饋。如果可執行文件中的某個測試失敗,我確切知道測試失敗的原因以及原因。以前,我使用了一個makefile,並且在makefile的最後我只執行了所有的測試。我首先嚐試通過在cmake中創建一個自定義構建目標來解決這個問題。但是,它只執行第一個命令。我需要一種方法來從CTest獲得更詳細的輸出,或者我需要一種方法來自動輸出一個bash腳本或類似的CMake來執行每個單元測試可執行文件。換句話說,我現在設置了cmake文件,所以我只需要在一個地方添加單元測試來生成可執行文件,而且如果我可以避免的話,我不想記住將它添加到第二個地方它。有沒有人有這方面的經驗?
非常感謝。
請注意:已經有一個名爲'test'的預定義CMake目標。通常不建議添加具有相同名稱的自定義目標。你也可以在你調用「make test」的同一目錄下調用「ctest -V」或「ctest -VV」,它將運行完整的測試套件*和*顯示所有測試的輸出。 (-V == verbose,-VV ==非常詳細) – DLRdave
只是FYI,我真的很感謝快速回復(以及下面的回覆)。我剛剛上學,沒有時間去測試其中的任何一個。只要我這樣做,我會選擇適當的最佳答案。只是想讓你知道我沒有忘記。 :) – Landon