我已在 CMakeLists.txt 中启用覆盖率,以便使用
查找覆盖率信息add_compile_options(--coverage)
我想将其添加到构建系统中,以便在成功构建后,构建系统运行单元测试并发送覆盖率报告(lcov)。效果很好。
构建系统从调试构建中剥离(strip --strip-all)调试符号,剥离的二进制文件用于生产和测试环境。问题是编译器添加的覆盖代码无法从二进制文件中删除。因此二进制大小更大。
我知道添加的覆盖代码现在是二进制文件的一部分,并且 strip 仅删除调试符号。 Strip 无法区分覆盖代码和功能。有没有办法从二进制文件中删除覆盖代码?
调试版本的二进制大小是
13949142 - Debug build
1014326 - Stripped Debug build
具有覆盖代码的调试版本的二进制大小
16152614 - Debug build with coverage
1575174 - Stripped Debug build with coverage
有没有办法从二进制文件中删除覆盖代码?
不。您必须在没有 --coverage 选项的情况下重新编译。