В случае, если кто-то еще споткнется по этому вопросу.Вот что я закончил:
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 завершился успешно.