Skip to content

25.08 - August 2025

Latest
Compare
Choose a tag to compare
@StableCoder StableCoder released this 05 Aug 00:38
· 3 commits to main since this release
5b6c6ef

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.