Full Changelog: 24.08.1...25.08
Code Coverage Rework
The code coverage via clang/LLVM and GCC/lcov has been largely updated.
Additional EXCLUDE
options
The EXCLUDE
options when passed to either target_code_coverage
or add_code_coverage_all_targets
applies to both backends. While this is fine for specified files, when attempting to deal with non-specifics, such as attempting to exclude directories, the two back-ends accept different input. GCC/lcov excludes via glob, and clang/LLVM excludes by regex.
As such, the LLVM_EXCLUDE
and LCOV_EXCLUDE
options have been added so projects that use both can do so with less issues.
target_code_coverage(
example
EXCLUDE file/path.cpp
LLVM_EXCLUDE ${CMAKE_CURRENT_SOURCE_DIR}/.*
LCOV_EXCLUDE ${CMAKE_CURRENT_SOURCE_DIR}/*
)
Fixed parrallelization of clang/LLVM coverage builds
Previously to accomodate the ccov-all
targets, a file would be written to that would contain all objects to check against and all generated profile data files, and because multiple execution runs could attempt to write to the same file without locking, issues/corruption could occur.
To resolve, each individual target now places that data into separate files in an expected location, and the ccov-all
targets now collate all those files instead, mitigating the issue.
Updated Sanitizer Examples
More examples to more comprehensively show the issues that can be detected.
Added baseline CI jobs to show how the examples can run without obvious issue when not instrumented.
Cleanup Warnings
With the release of CMake 4.0, some add_custom_command
calls had empty COMMANDs which are no longer allowed by default.