Буллсай покрывает недостаток передачи препроцессора определяет компилятору
Я пытаюсь настроить Bullseye Coverage для проекта C++. У нас есть довольно сложная среда сборки путем кросс-компиляции для QNX из решений Visual Studio с использованием файлов свойств (*.props), используемых проектами. Я не могу здесь вдаваться в подробности, но думаю, что сейчас это не нужно. В общем, при запуске сборки решения VS с помощью MSbuild, мы можем передать параметр, например, "CompileMode= покрытие", которое просто изменяет вызов кросс-компилятора, добавляя префикс вызова covc. Вся эта настройка уже работает для тестового решения и некоторых проектов в нашем основном решении. Но для некоторых источников это приводит к ошибкам компилятора, которые не появляются в обычной сборке. Исследуя последовательность вызовов covc, я обнаружил, что определения препроцессора не передаются должным образом. Вот часть вывода:
...\ccover\bin\covc -v -f<bin-path>\CCover\target.cov <path-to-cross-compiler>\x86\usr\bin\QCC -V4.7.3,gcc_ntoarmv7le -c -DQNXVER=66 -DSOME_DEFINE=1 -DSOME_OTHER_DEFINCE=test -DNO_LARGEFILE_SOURCE -g -D_DEBUG -O2 -fPIC -Wall -Winit-self -Wmissing-format-attribute -Wformat-nonliteral -Wformat-security -Wunused -Wclobbered -Wempty-body -Wpacked -Wdisabled-optimization -Wfloat-equal -Wpointer-arith -Wtype-limits -Winvalid-pch -Wno-narrowing -DQNX=1 -DARMv7=1 -v -I<some-include-path> -o obj\Release\CCover\<target>.o target.c
BullseyeCoverage Compile C++ 8.11.7 Windows License xxxx
Copyright (c) Bullseye Testing Technology 1990-2016
arguments=<same-as-above>
cfg=[]
PATH=<content-of-path-variable>
currentDir=<the-source-dir>
appDataDir=<appdata-dir>
compiler=QNX 4.7.3
commandLine=<same-as-above-everything-AFTER-the-.cov-file>
COVFILE not set
opening <.cov-file-path>
fileId=2913875e
6920 create C:/Temp/covc/315f6c74/
create C:/Temp/covc/315f6c74/6920
running <compiler-path>/x86/usr/bin/qcc.exe -E -D_BullseyeCoverage=811007 -V4.7.3,gcc_ntoarmv7le -DQNXVER=66 -DSOME_DEFINE=1 -DSOME_OTHER_DEFINCE=test -DNO_LARGEFILE_SOURCE -g -D_DEBUG -O2 -fPIC -Wall -Winit-self -Wmissing-format-attribute -Wformat-nonliteral -Wformat-security -Wunused -Wclobbered -Wempty-body -Wpacked -Wdisabled-optimization -Wfloat-equal -Wpointer-arith -Wtype-limits -Winvalid-pch -Wno-narrowing -DQNX=1 -DARMv7=1 -v -I<some-include-path> target.c
object obj\Release\CCover\target.o d0538761 180
running <compiler-path>/x86/usr/bin/qcc.exe -V4.7.3,gcc_ntoarmv7le -c -g -O2 -fPIC -Wall -Winit-self -Wmissing-format-attribute -Wformat-nonliteral -Wformat-security -Wunused -Wclobbered -Wempty-body -Wpacked -Wdisabled-optimization -Wfloat-equal -Wpointer-arith -Wtype-limits -Winvalid-pch -Wno-narrowing -v -I<some-include-path> -o obj\Release\CCover\target.o C:/Temp/covc/315f6c74/target.ii -Wno-return-type
Последний вызов covc фактически вызывает компилятор с инструментированным исходным файлом (target.ii). Здесь все определения (-D???) отсутствуют. Компиляция приносит ошибки, которые я пока не хочу обсуждать. Когда я вручную добавляю "-E" к параметрам моего компилятора в файле свойств, все определения -D также передаются в этой последней команде. Но затем я получаю ошибку компоновщика "файл не распознан: формат файла не распознан" для результирующего файла target.o.
Есть идеи?
Заранее большое спасибо, Себастьян