1# Coverage 2CONFIG(coverage) { 3 OBJECTS_DIR = 4 MOC_DIR = 5 TOP_SRC_DIR = $$PWD 6 7 LIBS += -lgcov 8 QMAKE_CXXFLAGS += --coverage 9 QMAKE_LDFLAGS += --coverage 10 11 QMAKE_EXTRA_TARGETS += coverage cov 12 QMAKE_EXTRA_TARGETS += clean-gcno clean-gcda coverage-html \ 13 generate-coverage-html clean-coverage-html coverage-gcovr \ 14 generate-gcovr generate-coverage-gcovr clean-coverage-gcovr 15 16 clean-gcno.commands = \ 17 "@echo Removing old coverage instrumentation"; \ 18 "find -name '*.gcno' -print | xargs -r rm" 19 20 clean-gcda.commands = \ 21 "@echo Removing old coverage results"; \ 22 "find -name '*.gcda' -print | xargs -r rm" 23 24 coverage-html.depends = clean-gcda check generate-coverage-html 25 26 generate-coverage-html.commands = \ 27 "@echo Collecting coverage data"; \ 28 "lcov --directory $${TOP_SRC_DIR} --capture --output-file coverage.info --no-checksum --compat-libtool"; \ 29 "lcov --extract coverage.info \"*/src/*.cpp\" -o coverage.info"; \ 30 "lcov --remove coverage.info \"moc_*.cpp\" -o coverage.info"; \ 31 "LANG=C genhtml --prefix $${TOP_SRC_DIR} --output-directory coverage-html --title \"Code Coverage\" --legend --show-details coverage.info" 32 33 clean-coverage-html.depends = clean-gcda 34 clean-coverage-html.commands = \ 35 "lcov --directory $${TOP_SRC_DIR} -z"; \ 36 "rm -rf coverage.info coverage-html" 37 38 coverage-gcovr.depends = clean-gcda check generate-coverage-gcovr 39 40 generate-coverage-gcovr.commands = \ 41 "@echo Generating coverage GCOVR report"; \ 42 "gcovr -x -r $${TOP_SRC_DIR} -o $${TOP_SRC_DIR}/coverage.xml -e \".*/moc_.*\" -e \"tests/.*\" -e \".*\\.h\"" 43 44 clean-coverage-gcovr.depends = clean-gcda 45 clean-coverage-gcovr.commands = \ 46 "rm -rf $${TOP_SRC_DIR}/coverage.xml" 47 48 QMAKE_CLEAN += *.gcda *.gcno coverage.info coverage.xml 49} 50