2010-12-10 21 views
11

मेरे स्रोत और पेड़ का निर्माण (Makefile to put object files from source files different directories into a single, separate directory? देखें) इस तरह दिखता है एक मेकअप (जो बनाता है और FooAndBarTests चलता है) के बाद:मैं 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 
    - ... 

मैं तो gcov -o obj/ ../src/Foo.cpp और gcov -o obj/ ../src/Bar.cpp चलाकर परीक्षण निर्देशिका में फ़ाइलों को .gcov उत्पादन कर सकते हैं।

लेकिन अगर मैं 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! 

मैं lcov और genhtml जहां सीपीपी और ज फ़ाइलें कैसे बताऊँ कर रहे हैं?

+0

मुझे निश्चित रूप से पता नहीं है लेकिन संकलन करते समय -g विकल्प का उपयोग करने का प्रयास करें। यह डीबगिंग उद्देश्यों के लिए मेटा डेटा जोड़ता है (फ़ाइल पथ और लाइन नंबर सहित, मुझे लगता है)। – sellibitze

+0

संकलन करते समय मैं पहले से ही -g विकल्प का उपयोग कर रहा हूं। –

उत्तर

14

lcov करने के लिए -b विकल्प का उपयोग करें। -b विकल्प कोड बेस निर्दिष्ट करता है।

+0

"-b" जोड़ना मेरी lcov कमांड लाइन पर (जब एक ही निर्देशिका में चलाया जाता है जहां मैंने किया था) चाल चल रही थी। –