根据GCC在线文档,应该在与编译器调用时相同的当前目录下运行gcov。比如说,我有以下源文件布局:
是时候运行gcov了。上述在线文档要求我在与构建程序的gcc相同的“根目录”中运行gcov。并且.gcov覆盖文件将在当前目录(也是“根目录”)生成。由于有两个文件具有相同的名称(都是“file.cpp”),因此只会生成一个file.cpp.gcov文件。另一个被覆盖了。
gcov如何解决这个问题?它是否支持具有相同名称的多个文件?
一种解决方法是使用“--p”选项(--preserve-paths)。但由于在我的情况下它会创建一个超长的文件名,所以我不想将其用作通用解决方案。
我很高兴知道是否有人可以分享一些关于为什么必须在调用gcc的相同目录中运行gcov的背景知识?或者gcov是否可以提供一个选项来定义这些源文件所在的位置,以使其更加灵活?
-root
-source
-dir1
-file.cpp
-dir2
-file.cpp
我在“root”目录下使用相应的标志(即-fprofile-arcs,-ftest-coverage和-lgcov)运行gcc。 然后我运行生成的程序。 默认情况下,.gcno,.gcda文件与对象文件生成在一起,看起来像:
-root
-source
-dir1
-file.cpp
-file.o
-file.gcno
-file.gcda
-dir2
-file.cpp
-file.o
-file.gcno
-file.gcda
是时候运行gcov了。上述在线文档要求我在与构建程序的gcc相同的“根目录”中运行gcov。并且.gcov覆盖文件将在当前目录(也是“根目录”)生成。由于有两个文件具有相同的名称(都是“file.cpp”),因此只会生成一个file.cpp.gcov文件。另一个被覆盖了。
gcov如何解决这个问题?它是否支持具有相同名称的多个文件?
一种解决方法是使用“--p”选项(--preserve-paths)。但由于在我的情况下它会创建一个超长的文件名,所以我不想将其用作通用解决方案。
我很高兴知道是否有人可以分享一些关于为什么必须在调用gcc的相同目录中运行gcov的背景知识?或者gcov是否可以提供一个选项来定义这些源文件所在的位置,以使其更加灵活?