CMake ninja с покрытием помещает файлы gcno в корневой двоичный каталог

Я создаю проект на cmake с помощью генератора ниндзя и создаю свой проект для покрытия с помощью add_compile_options("$<$<CONFIG:COVERAGE>:-g;-O0;-ftest-coverage;-fprofile-arcs;-fno-builtin>"). Что происходит, так это то, что мои файлы gcno помещаются в ${CMAKE_BINARY_DIR}, а не в соответствующий целевой каталог, например ${CMAKE_BINARY_DIR}/CMakeFiles/Project.dir.

Смысл этой разницы в том, что теперь у меня не может быть исходных файлов с одинаковыми именами.

Когда я создаю тот же проект с make-файлами, файлы 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

person Marnix    schedule 19.07.2019    source источник


Ответы (1)


Мы провели дополнительные исследования и пришли к выводу, что проблема заключается в оболочке qcc.exe. Использование gcc.exe напрямую решает проблему.

person Marnix    schedule 19.07.2019