Makefile中如何批量将目录下所有.info文件传入lcov生成全局覆盖率?
解决方案
你可以直接用GNU Make内置的字符串替换函数,给每个.info文件批量添加--add-tracefile 前缀,再传入lcov命令即可,具体实现如下:
- 基于你已经获取的
INFO_FILES变量,生成lcov需要的参数列表
# 给每个.info文件前加上--add-tracefile前缀 ADD_TRACE_ARGS = $(patsubst %,--add-tracefile %,$(INFO_FILES))
- 直接在lcov命令中引用生成的参数变量即可
# 全局覆盖率生成目标示例 global_coverage: lcov $(ADD_TRACE_ARGS) -o global_coverage.info
补充说明
- 上述方案兼容所有支持
--add-tracefile参数的lcov版本,无需依赖shell通配符逻辑,稳定性更高 - 如果你使用的是lcov 1.13及以上版本,也可以直接用shell通配符简化写法(该写法依赖shell的通配符展开能力):
global_coverage: lcov --add-tracefile $(TEST_BUILD_DIR)/*.info -o global_coverage.info
内容的提问来源于stack exchange,提问作者Fred74
相关产品推荐
相关产品推荐

