LINUX.ORG.RU

Опция компилятора G++ для отображения номера строки ошибки


0

1

Я работаю в gedit, для компиляции использую Makefile. Всё что я менял во «внешних инструментах» подчёркнуто на скриншоте: http://dl.dropbox.com/u/16671399/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA-%D0%A3%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5%20%D0%B2%D0%BD%D0%B5%D1%88%D0%BD%D0%B8%D0%BC%D0%B8%20%D1%81%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B2%D0%B0%D0%BC%D0%B8.png

Проблема в том, что gedit не может распознать номера строк ошибок  из окна вывода оболочки, которые выдаёт компилятор g++. Проблему описать достаточно непросто но я всётки попробую :): После компиляции исходника компилятор выдаёт в так называемое окно «Вывод оболочки» (в нижней части экрана) список ворнингов и ероров, кароче всё что оставляет после себя компилятор: http://dl.dropbox.com/u/16671399/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA-Makefile%20%28Media%29%20-%20gedit.png Проблема в том что ошибки компилятором G++ выводятся в формате:

cspritebase.cxx:36:33: error:

И из-за этого по нажатию на строку в Окне сборки не возможно автоматически переместить курсор на ту строчку в которой ошибка (как в нормальных IDE :) ). А при объёмных сырцах этой фичи реально нехватает. Я бы и не знал что оно вообще может работать но я недавно компилил ассемблерные коды nasm-ом, и он выдавал ошибки в формате типа:

cspritebase.cxx:36: error:

И там всё это работало! Так что проблема очевидно в лишнем номере столбца (ну тоесть номере символа на строке). Дак вот собственно вопрос: Есть ли какая-нибуть опция для компилятора g++ что бы включить режим вывода без столбца, что бы он только сообщал строку ошибки? Я перелопатил документацию и маны но нашел только это: http://gcc.gnu.org/onlinedocs/gcc-4.6.1/gcc/Language-Independent-Options.html#Language-Independent-Options но тут нету того что я ищу. Фух дописал :) Спасибо всем кто осилил весь мой гиганский пост,зарание спасибо.

ЗЫ: Прошу не предлагать выкинуть Gedit, и юзать среды разработки. Мне приходилось работать немного и в QT и в нетбиансе, но как по мне они сильно жирные для небольших проектов в которых можно обойтись без проектирования сложных интерфейсов, и без потребности в отладке. Gedit лёгкий и ктому же имеет достаточно удобных плагинов (коментирование кода, автодополнение слов, выбор цвета, закладки, сеансы)

ЗЫЫ: можно както в пост вставить картинки? что-то типа [img][/img]

Надо не компилятор насиловать, а gedit исправлять.

k_andy ★★★ ()

> cspritebase.cxx:36:33: error:
> cspritebase.cxx:36: error:

-fno-show-column

arsi ★★★★★ ()

Попробуй лучше Geany. Там эта фича точно есть, как и нормальное автодополнение и просмотр определенных имен в проекте и многое другое...

LongLiveUbuntu ★★★★★ ()

В вашем скрипте на скриншоте измените make на

exec 3>&1
make 2>&1 1>&3 | sed 's~\([^:]*:[0-9]*:\)[0-9]*:\(.*\)~\1\2~'

backbone ★★★★★ ()
Ответ на: комментарий от backbone

Огромное спасибо arsi и backbone, arsi это именно то что я искал=) Работает отлично. Вариант backbone наверное с точки зрения универсальности мейкфайла будет правильнее, хоть я пока и не понимаю что там написано(. Ну буду разбираться. Ещё раз большое спасибо за ответы, реально классный форум)).

dartan ()

А что собственно мешает использовать нормальную IDE?

Pavval ★★★★★ ()

> Я работаю в gedit

(как в нормальных IDE :) ).

Проваливай на Geany, тролль.

anonymous ()
Ответ на: комментарий от arsi

Интересно, не знал про такие директивы компилятора, а есть еще какие нибудь с подобным уклоном?

deterok ★★★★★ ()
Ответ на: комментарий от Pavval

А что собственно мешает использовать нормальную IDE?

причину я написал в конце поста предвкушая что такие неуместные вопросы будут. большенство времени я провожу всё равно в IDE, но вопрос был не по IDE!... в общем не буду повторяться - причина написана в моём первом посте.

dartan ()
Ответ на: комментарий от deterok

> а есть еще какие нибудь с подобным уклоном?

с каким уклоном? о_О
бдсм чтоле?

arsi ★★★★★ ()
Ответ на: комментарий от arsi

Вывод более подробной инфы о причине ошибки компеляции

deterok ★★★★★ ()
Ответ на: комментарий от deterok

> Вывод более подробной инфы о причине ошибки компеляции

данная опция к таковым не относится. она только регулирует (уменьшает) точность определения позиции, к которой относится «diagnostics message» (ошибка, предупреждение, …). к таким опциям можно причислить, например, -ftabstop=width — без -fno-show-column она даст возможность более точно указать координаты проблемного кода для исходников, в которых \t ≠ 8; опции из разделов мана по гцц: «Options to Control Diagnostic Messages Formatting», «Options to Request or Suppress Warnings» и т.д. и вообще, почитай ман, он не большой, но полезный ;)

arsi ★★★★★ ()
Ответ на: комментарий от Pavval

А что собственно мешает использовать нормальную IDE?

«нормальную» IDE может мешать использовать например архитектура. В частности если разработчик сидит на аппаратном X-терминале. Тяжеловесы в виде Eclipse, geany там еле ворочаются. Хорошо и быстро работают vim, gedit, sourcenav. Так что для простых смертных остаются gedit для работы с кодом и sourcenav для работы с проектом.

Кстати странная проблема, на моей памяти gedit корректно работал с протоколами make, gcc.

MKuznetsov ★★★★★ ()

> ЗЫ: Прошу не предлагать выкинуть Gedit,

Почему? Gedit говно, используйте vim/gvim.

и юзать среды разработки. Мне приходилось работать немного и в QT и в нетбиансе,


QT - Apple QuickTime. Вы вероятно хотели сказать Qt и netbeans - но первое это тулкит (некоторые скажут, что это фреймворк), а второе монструозная ide.

andreyu ★★★★★ ()
Ответ на: комментарий от andreyu

да я имел ввиду IDE QtCreator а не библиотеки Qt. Да вим это тоже штука)) когда нет иксов его и юзаю=)

dartan ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.