具有覆盖率的CMake Ninja将gcno文件放在根二进制目录中

时间:2019-07-19 12:56:22

标签: makefile cmake code-coverage ninja

我正在使用忍者生成器通过cmake构建一个项目,并为add_compile_options("$<$<CONFIG:COVERAGE>:-g;-O0;-ftest-coverage;-fprofile-arcs;-fno-builtin>")构建覆盖范围的项目。发生的情况是,我的gcno文件放在${CMAKE_BINARY_DIR}中,而不是放在${CMAKE_BINARY_DIR}/CMakeFiles/Project.dir这样的相应目标目录中。

这种区别的含义是,我现在无法使用同名的源文件。

当我使用makefiles构建相同的项目时,gcno文件最终会存储在这些文件夹中。我检查了它在命令行中执行的不同调用,区别如下。绝对是工作目录的更改。

我如何告诉忍者也将gcno文件放入相应的项目目录中?

制作

cd C:/my_project/MASTER/build/EXTERNAL_3RDPARTY/blake2 && C:/qnx700/host/win64/x86_64/usr/bin/qcc.exe -Vgcc_ntox86_64  -IC:/C:/my_project/3RDPARTY/blake2/src  -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -Wconversion -Wall -Wextra -pedantic -Wmissing-declarations -Wunused -Wpedantic -Wlogical-op -Wdouble-promotion -Wformat=2 -fmessage-length=0 -fno-exceptions -march=broadwell -g -O0 -ftest-coverage -fprofile-arcs -fno-builtin -std=c11 -o CMakeFiles/libblake2.dir/src/blake2/blake2b.c.o -c C:/my_project/3RDPARTY/blake2/src/blake2/blake2b.c

忍者:

C:\qnx700\host\win64\x86_64\usr\bin\qcc.exe -Vgcc_ntox86_64 -IC:/C:/my_project/3RDPARTY/blake2/src -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -Wconversion -Wall -Wextra -pedantic -Wmissing-declarations -Wunused -Wpedantic -Wlogical-op -Wdouble-promotion -Wformat=2 -fmessage-length=0 -fno-exceptions -march=broadwell -g -O0 -ftest-coverage -fprofile-arcs -fno-builtin -std=c11 -Wp,-MD,EXTERNAL_3RDPARTY\blake2\CMakeFiles\libblake2.dir\src\blake2\blake2b.c.o.d -Wp,-MT,EXTERNAL_3RDPARTY/blake2/CMakeFiles/libblake2.dir/src/blake2/blake2b.c.o -Wp,-MF,EXTERNAL_3RDPARTY\blake2\CMakeFiles\libblake2.dir\src\blake2\blake2b.c.o.d -o EXTERNAL_3RDPARTY/blake2/CMakeFiles/libblake2.dir/src/blake2/blake2b.c.o -c C:/my_project/3RDPARTY/blake2/src/blake2/blake2b.c

1 个答案:

答案 0 :(得分:0)

我们进行了更多研究,得出的结论是qcc.exe包装器是实际的问题。使用gcc.exe直接解决了该问题。