mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
gcov_example: Adds cmake target to generate report
Closes IDF-727
This commit is contained in:
parent
534062dd3b
commit
2926cd09a2
23
components/app_trace/project_include.cmake
Normal file
23
components/app_trace/project_include.cmake
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
# idf_create_lcov_report
|
||||||
|
#
|
||||||
|
# Create coverage report.
|
||||||
|
function(idf_create_coverage_report report_dir)
|
||||||
|
set(gcov_tool ${CONFIG_SDK_TOOLPREFIX}gcov)
|
||||||
|
idf_build_get_property(project_name PROJECT_NAME)
|
||||||
|
|
||||||
|
add_custom_target(lcov-report
|
||||||
|
COMMENT "Generating coverage report in: ${report_dir}"
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E echo "Using gcov: ${gcov_tool}"
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E make_directory ${report_dir}/html
|
||||||
|
COMMAND lcov --gcov-tool ${gcov_tool} -c -d ${CMAKE_CURRENT_BINARY_DIR} -o ${report_dir}/${project_name}.info
|
||||||
|
COMMAND genhtml -o ${report_dir}/html ${report_dir}/${project_name}.info)
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
# idf_clean_coverage_report
|
||||||
|
#
|
||||||
|
# Clean coverage report.
|
||||||
|
function(idf_clean_coverage_report report_dir)
|
||||||
|
add_custom_target(cov-data-clean
|
||||||
|
COMMENT "Clean coverage report in: ${report_dir}"
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E remove_directory ${report_dir})
|
||||||
|
endfunction()
|
@ -4,3 +4,6 @@ cmake_minimum_required(VERSION 3.5)
|
|||||||
|
|
||||||
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
|
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
|
||||||
project(gcov_example)
|
project(gcov_example)
|
||||||
|
|
||||||
|
idf_create_coverage_report(${CMAKE_CURRENT_BINARY_DIR}/coverage_report)
|
||||||
|
idf_clean_coverage_report(${CMAKE_CURRENT_BINARY_DIR}/coverage_report)
|
||||||
|
@ -127,6 +127,14 @@ cov-data-clean:
|
|||||||
.PHONY: lcov-report cov-data-clean
|
.PHONY: lcov-report cov-data-clean
|
||||||
```
|
```
|
||||||
|
|
||||||
|
For CMake-based build system, add the following lines to you project's `CMakeLists.txt` after the line including `project.cmake`:
|
||||||
|
|
||||||
|
```
|
||||||
|
include($ENV{IDF_PATH}/tools/cmake/gcov.cmake)
|
||||||
|
idf_create_coverage_report(${CMAKE_CURRENT_BINARY_DIR}/coverage_report)
|
||||||
|
idf_clean_coverage_report(${CMAKE_CURRENT_BINARY_DIR}/coverage_report)
|
||||||
|
```
|
||||||
|
|
||||||
Those lines add two build targets:
|
Those lines add two build targets:
|
||||||
* `lcov-report` - generates html coverage report in `$(BUILD_DIR_BASE)/coverage_report/html` directory.
|
* `lcov-report` - generates html coverage report in `$(BUILD_DIR_BASE)/coverage_report/html` directory.
|
||||||
* `cov-data-clean` - removes all coverage data files and reports.
|
* `cov-data-clean` - removes all coverage data files and reports.
|
||||||
@ -134,6 +142,8 @@ Those lines add two build targets:
|
|||||||
To generate report type the following command:
|
To generate report type the following command:
|
||||||
`make lcov-report`
|
`make lcov-report`
|
||||||
|
|
||||||
|
For CMake-based build system, type `cmake --build build/ --target lcov-report`
|
||||||
|
|
||||||
The sample output of the command is below:
|
The sample output of the command is below:
|
||||||
|
|
||||||
```
|
```
|
||||||
|
Loading…
Reference in New Issue
Block a user