Буллсай покрывает недостаток передачи препроцессора определяет компилятору

Я пытаюсь настроить 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.

Есть идеи?

Заранее большое спасибо, Себастьян

0 ответов

Другие вопросы по тегам