2010-12-10 12 views
11

私のソースツリーを構築するには、(構築し、FooAndBarTestsを実行します)メイク後(Makefile to put object files from source files different directories into a single, separate directory?を参照)のようになります。私は、gcov -o obj/ ../src/Foo.cppgcov -o obj/ ../src/Bar.cppを実行して、testディレクトリ内のファイルを.gcov生成することができlcovに私の.cppファイルと.hファイルの場所を教えてください。

src 
- Foo.cpp 
- Bar.cpp 
inc 
- Foo.h 
- Bar.h 
test 
- FooTest.cpp 
- BarTest.cpp 
- Main.cpp 
- Makefile 
- obj 
    - Foo.gcda 
    - Foo.gcno 
    - Bar.gcda 
    - Bar.gcno 
- FooAndBarTests 
UnitTest++ 
- libUnitTest++.a 
- src 
    - ... 

しかし、私はlcov -d obj/ -c -o FooAndBarTests.lcovを実行する場合、私は得る:

Capturing coverage data from obj/ 
Found gcov version: 4.2.1 
Scanning obj/ for .gcda files ... 
Found 4 data files in obj/ 
Processing Foo.gcda 
../src/Foo.cpp:cannot open source file 
Processing FooTest.gcda 
FooTest.cpp:cannot open source file 
../inc/Foo.h:cannot open source file 
../UnitTest++/src/Checks.h:cannot open source file 
... 

を私はgenhtml FooAndBarTests.lcovを実行したとき、私は得る:

Reading data file FooAndBarTests.lcov 
Found 45 entries. 
Found common filename prefix "/Users/dspitzer/FooAndBar/test" 
Writing .css and .png files. 
Generating output. 
Processing file UnitTest++/src/Checks.h 
genhtml: ERROR: cannot open /Users/dspitzer/FooAndBar/test/UnitTest++/src/Checks.h for reading! 

私はどこの.cppと.hファイルlcovとGENHTMLに伝えるにはどうすればよいですありますか?

+0

わかりませんが、コンパイル時に-gオプションを使用してみてください。それは、デバッグのためのメタデータを追加します(ファイルパスと行番号を含む)。 – sellibitze

+0

コンパイル時にすでに-gオプションを使用しています。 –

答えて

14

-bオプションをlcovに設定してください。 -bオプションはコードベースを指定します。

+0

"-b"を追加する私のlcovのコマンドライン(私がmakeを行ったのと同じディレクトリで動いたとき)はそのトリックをやった。 –

関連する問題