我想用 gcovr(或 gcov/lcov)分析的程序与编译程序的构建目录一起位于共享文件系统上,并且我有多个工作人员打算并行测试我的程序。为了解决竞争条件问题(工作人员将全部运行我的程序,因此都在共享文件系统的同一位置生成名称相同的 gcda 文件),我将 gcda 文件重定向到每个工作人员上的单独目标目录(如描述here),我一直在运行以下命令:
gcovr -v -r /absolute/path/to/root --html --html-details -o test-details.html --object-directory=/absolute/path/to/object/dir /absolute/path/to/gcda/dir
最后一条路径是,在此处search_paths
描述。我希望这会查找程序源、.o 文件和gcda 文件。但是,我运行它,我看到 gcovr 正在以这种形式从根目录运行 gcov 命令:/absolute/path/to/root
/absolute/path/to/object/dir
/absolute/path/to/gcda/dir
-v
gcov /absolute/path/to/gcda/dir/file.gcda --branch-counts --branch-probabilities --preserve-paths --object-directory /absolute/path/to/gcda/dir
同样,我希望它以这种形式运行(查看 --object-directory 路径):
gcov /absolute/path/to/gcda/dir/file.gcda --branch-counts --branch-probabilities --preserve-paths --object-directory /absolute/path/to/object/dir
它在像后一个命令一样运行时表现正常,但 gcovr 正在运行前者。我只使用 gcovr 而不是 gcov,因为我有一个大型项目(我知道 gcovr 是由 lcov 构建的)。有谁知道它为什么会这样?(这是它应该运行的方式吗?)我怎样才能让它按照我想要的方式运行?提前致谢!