mkdir -p /tmp/build &&
cd /tmp/build &&
mkdir -p /tmp/src &&
echo "int main(){return 0;}" > /tmp/src/prog.c &&
gcc --coverage -o prog /tmp/src/prog.c &&
./prog &&
gcovr -v -r .
выведет пустой отчет.
Scanning directory . for gcda/gcno files...
Found 2 files (and will process 1)
Processing file: /tmp/build/prog.gcda
Running gcov: 'gcov /tmp/build/prog.gcda --branch-counts --branch-probabilities --preserve-paths --object-directory /tmp/build' in '/tmp/build'
Finding source file corresponding to a gcov data file
currdir /tmp/build
gcov_fname #tmp#src#prog.c.gcov
[' -', ' 0', 'Source', '/tmp/src/prog.c\n']
source_fname /tmp/build/prog.gcda
root /tmp/build
fname /tmp/src/prog.c
Parsing coverage data for file /tmp/src/prog.c
Filtering coverage data for file /tmp/src/prog.c
Gathered coveraged data for 0 files
------------------------------------------------------------------------------
GCC Code Coverage Report
Directory: .
------------------------------------------------------------------------------
File Lines Exec Cover Missing
------------------------------------------------------------------------------
------------------------------------------------------------------------------
TOTAL 0 0 --%
------------------------------------------------------------------------------
Однако, если я вручную запускаю
gcov /tmp/build/prog.gcda --branch-counts --branch-probabilities --preserve-paths --object-directory /tmp/build
Я получаю правильные результаты
File '/tmp/src/prog.c'
Lines executed:100.00% of 1
No branches
No calls
Creating '#tmp#src#prog.c.gcov'
Кажется, что gcovr
не извлекла покрытие из правильных в остальном выходных данных gcov
. Это происходит только в том случае, если исходный файл находится за пределами текущего каталога (такой же, как каталог сборки, такой же, как выходной каталог, такой же, как каталог запуска), и gcc
ics вызывается с абсолютным путем к исходному файлу.
Как я могу это исправить?
Редактировать
Исправлено в исходном gcovr для относительных путей, но похоже на ошибку для абсолютных путей.
mkdir
, вы должны объяснить структуру каталогов непосредственно в своем вопросе. Объяснение того, где размещаются файлы obj и исходники - person Vikas Tawniya   schedule 17.05.2017