Проект make-файла Visual Studio не показывает ошибки в редакторе - PullRequest
4 голосов
/ 07 мая 2011

Я использую ARM-компилятор (RVDS) и использую Visual C ++ 2005 Express в качестве своей IDE, потому что я не фанат старой версии Eclipse, которую выбрал ARM. Я создал проект makefile, который собирает правильно. К сожалению, когда возникает ошибка компиляции, ошибка отображается на панели «Ошибка», но двойной щелчок по ошибке не открывает файл в редакторе.

В области «Ошибка» отображается правильный файл, но номер строки является пустым. Есть ли способ заставить Visual C ++ лучше анализировать сообщения об ошибках, извлекать правильные номера строк и связывать ошибки с редактором?

ОБНОВЛЕНИЕ: Visual C ++ правильно проанализировал вывод компилятора, когда я создал решение / проект в том же каталоге, что и make-файл или сценарии сборки. У меня была эта проблема, только когда решение / проект был создан в другом каталоге, чем make-файл.

Ответы [ 2 ]

4 голосов
/ 13 августа 2011

В случае, если кто-то еще споткнется по этому вопросу.Вот что я закончил:

make -f $(TargetName).mak  2<&1 | sed -e 's|/cygdrive/\([a-z]\)/|\1:/|' -e 's/\.\([ch]\):\([0-9]*\)/.\1 (\2)/' ; exit ${PIPESTATUS[0]}

Это работает для форматов ошибок gcc файла.c: строка #: ошибка desc (например, main.c: 12: HelloWorld не определен)

Бит 2 <& 1 гарантирует, что мы также захватываем stderr, первый заменитель sed заменяет сопоставление диска cygwin обратно в windows (мой случай), а второй заменяет формат: dd: error на (dd): для файлов, заканчивающихся на .cили .h. </p>

наконец, состояние выхода make поддерживается с помощью бита exit $ {PIPESTATUS [0]}, чтобы визуальная студия не думала, что сборка прошла успешно только потому, что sed завершился успешно.

4 голосов
/ 07 мая 2011

В прошлом я использовал скрипт, который отфильтровывал сообщение об ошибке моего стороннего компилятора в формате, ожидаемом Visual Studio. С тех пор я потерял сценарии (из-за того, что они мне не понадобились, меняли работу и т. Д.).

Вот зеркало публикации в группе новостей Microsoft (я не могу найти публикацию в группах Google), в которой описан аналогичный процесс вместе со сценарием sed:

Соответствующая информация заключается в том, что конфигурация сборки VS запускает инструмент и направляет вывод через скрипт sed:

CALL mm.bat 2<&1 | sed -u -f ..\..\errfix.sed

и скрипт sed:

#------- START errfix.sed
#MPC561 - TYPE:\1 ID:\2 FILE:\3 LINE:\4 POS:\5 REST:\6
s/^(\([EWI]\)) \([A-Z][0-9]*-*[A-Z]*\); "\(.*\)", line \([0-9]*\) pos \([0-9]*\); \(.*\)/\3(\4) : (\1) \2 : \6/
s/(E)/Error/g
s/(W)/Warning/g
s/(I)/Informational/g
s/..\\..\\..\\cu\\//
s/..\\..\\../../
#------- END

Я полагаю, что сценарий должен был бы быть адаптирован к вашему конкретному инструменту - на первый взгляд сценарий выглядит довольно пугающим (для меня в любом случае), но я бы поспорил, что будет не слишком сложно заставить его помассировать вывод что VS ожидает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...