2015-04-28 33 views
0

我有一個項目,包括我的項目和多個外部項目,這是一個建築物,正如我正在使用的項目一樣。它的結構是這樣的:gcov,make,cmake,ctest coverage build

external 
- subproj1 
- subproj2 
another_external_project 
myproject 
- src 
- tests 

我建立它首先運行「cmake的」配置它,並發現,如果滿足所有相關性,然後在「製造」進行編譯。測試使用「ctest」運行。 事情是我只需要覆蓋我的myproject/src目錄。

我試圖生成gcda文件:

  • 加入CPP_FLAGS「-coverage」之作,但我看到的只是一些文件,也沒有人需要覆蓋的文件在我的項目
  • 將覆蓋標誌CMakelist,但仍然相同

問題是: 1)我應該添加覆蓋標誌?在配置?或在「製造」? 2)如果是這樣,我應該添加標誌ctest CMakelist或不?

+0

另外,我試圖按照書面做:https://github.com/bilke/cmake-modules/blob/master/CodeCoverage.cmake,但得到一個錯誤,沒有gcda文件... – stanjer

+1

你也忘了鏈接器標誌 – paulm

回答

0

好的,找到答案。

事情與CMake的組態時,我應該已經通過它:

cmake -D"CMAKE_CXX_FLAGS=-g -O2 -w -fprofile-arcs -ftest-coverage" -D"CMAKE_C_FLAGS=-g -O2 -w -fprofile-arcs -ftest-coverage" 

一會兒,然後建立與提出申請,我應該通過其他變量,但具有相同的標誌:

make -j`cat /proc/cpuinfo | grep processor | wc -l` CFLAGS='-g -O2 -w -fprofile-arcs -ftest-coverage' CXXFLAGS='-g -O2 -w -fprofile-arcs -ftest-coverage' 

之後,我運行測試並生成報告。