Skip to content

Commit

Permalink
Integrate gcov support into Qt build system.
Browse files Browse the repository at this point in the history
To instrument a Qt application or library with the gcov coverage
tool, do `CONFIG+=gcov' in the application .pro file.

To instrument Qt itself with gcov, use the `-gcov' configure
option.

Change-Id: If24e91d95318609b0df1a76ed6d679bd92bcaab2
Reviewed-by: Oswald Buddenhagen <[email protected]>
Reviewed-by: Frederik Gladhorn <[email protected]>
  • Loading branch information
Sergio Ahumada authored and The Qt Project committed Aug 7, 2013
1 parent 82e976d commit 4780e53
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 0 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,8 @@ Makefile*
*.pro.user*
*.qmlproject.user*
*.gcov
*.gcda
*.gcno
bin/Qt*.dll
bin/assistant*
bin/designer*
Expand Down
6 changes: 6 additions & 0 deletions configure
Original file line number Diff line number Diff line change
Expand Up @@ -1518,6 +1518,11 @@ while [ "$#" -gt 0 ]; do
QTCONFIG_CONFIG="$QTCONFIG_CONFIG testcocoon"
fi
;;
gcov)
if [ "$VAL" = "yes" ]; then
QTCONFIG_CONFIG="$QTCONFIG_CONFIG gcov"
fi
;;
platform)
PLATFORM="$VAL"
# keep compatibility with old platform names
Expand Down Expand Up @@ -3438,6 +3443,7 @@ Configure options:
-qtlibinfix <infix> Renames all libQt*.so to libQt*<infix>.so.
-testcocoon ........ Instrument Qt with the TestCocoon code coverage tool.
-gcov .............. Instrument Qt with the GCov code coverage tool.
-D <string> ........ Add an explicit define to the preprocessor.
-I <string> ........ Add an explicit include path.
Expand Down
31 changes: 31 additions & 0 deletions mkspecs/features/gcov.prf
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
#
# Tested with gcov 4.8.1
# http://gcc.gnu.org/onlinedocs/gcc-4.8.1/gcc/Gcov.html

# To instrument a Qt application or library with the gcov coverage
# tool, do `CONFIG+=gcov' in the application .pro file.
#
# To instrument Qt itself with gcov, use the `-gcov' configure
# option.

# The .gcno file is generated when the source file is compiled.
# The .gcda file is generated when a program is executed.

# Example how to generate the html output after you've run the program or test
#
# lcov --capture --directory . --output-file coverage-gcov.info --no-external
# lcov --output-file coverage-gcov.info --remove coverage-gcov.info '*.moc*' '.*rcc*' '*3rdparty*'
# genhtml coverage-gcov.info --output-directory doc/coverage

# If you want to use gcov directly, you most likely need to manually move the .gcda and .gcno files
# along with the program.
#
# mv .obj/debug-shared/tst_example.gc* .
# gcov -b -c tst_example.cpp

QMAKE_CFLAGS += -fprofile-arcs -ftest-coverage
QMAKE_CXXFLAGS += -fprofile-arcs -ftest-coverage
QMAKE_OBJECTIVE_CFLAGS += -fprofile-arcs -ftest-coverage
QMAKE_LFLAGS += -fprofile-arcs -ftest-coverage

QMAKE_CLEAN += $(OBJECTS_DIR)*.gcno and $(OBJECTS_DIR)*.gcda

0 comments on commit 4780e53

Please sign in to comment.