mikrocontroller.net

Forum: Compiler & IDEs gcc output mit sed verarbeiten


Autor: vlad_tepesch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
Ich will das visual studio zu coden benutzen.
soweit funktioniert alles, nervig ist allerdings, dass man mit klick auf 
die Fehlermeldung nicht an die entsprechende Codezeile kommt, da der gcc 
ein Augabefortmat hat, was das studio nicht parst:

gcc_
file:line: error:

vs:
file(line) : error

das ist so ander hab ich mir gedacht und wollte den make-output durch 
den sed jagen.

prinzipiell kein problem:
echo ../main.c:77: error: expected ';' before 'piip' | sed 
's/:\([0-9]\+\):/(\1) :/g'

ein test in der CMD zeigt, das das fnktioniert

wenn ich aber statt echo das make benutze, bleibt der putput unberührt

hat jemand ne ahnung warum?

Autor: vlad_tepesch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sollte natürlich heißen:
"das ist so nicht sooo anders", hab ich mir gedacht und wollte den 
make-output durch den sed jagen.

Autor: Ahem (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe zwar Zweifel ob Du, wenn ich das richtig verstanden habe, 
Visual Studio mit gcc benutzen kannst, aber das lasse ich jetzt mal 
dahingestellt sein.

Das Problem wird sein, das gcc bzw. der Output von make nicht über 
stdout sondern etwa stderr oder einen anderen Ausgabekanal rausgeschickt 
wird. Da musst Du mal schauen, was es da für Ausgabemöglichkeiten gibt 
und das entsprechend auf dein sed umlenken.

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
bash,cmd: make 2>&1 | sed ...

Autor: vlad_tepesch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
[quote]Das Problem wird sein, das gcc bzw. der Output von make nicht 
über
stdout sondern etwa stderr oder einen anderen Ausgabekanal rausgeschickt
wird.[/quote]

Ah, du hast recht.
wie piped man den stderr weiter?
dateiumleitung funktioniert für den error-Kanal mittels 2>
aber 2| funktioniet nicht.

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du denn unbedingt den Berg zum Propheten verschieben musst: (*)
( gcc foo.c 2>&1 1>&4 | sed 's/:\([0-9][0-9]*\):/(\1) /g' ) 4>&1

Pipes kann man nur auf file descriptor 1 (stdout) aufsetzen, daher
muss man den FD 2 (stderr) auf diesen umbiegen.  Damit das
ursprüngliche stdout aber nicht durch die Pipe geht, wird es innerhalb
einer Subshell auf FD 4 gelegt, und außerhalb der Subshell (und
außerhalb der Pipe) dann wieder auf FD 1 zurück gedreht.

Allerdings erwischst du damit natürlich nur die Compilerfehler.

Außerdem kann GCC zuweilen auch noch nach der Zeilennummer die
Spaltennummer (mit einem weiteren Doppelpunkt getrennt) angeben.
Keine Ahnung, was dein Visual Affenzirkus damit dann macht...

(*) Eine vernünftige IDE kann man konfigurieren, wie die Fehlermeldungen
aussehen.

Autor: vlad_tepesch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ A.K.
hab deinen Post nicht gesehen

hab auch grad
http://technet.microsoft.com/en-us/library/bb490982.aspx
gefunden, da steht genau dieseumleitung von kanal 2 auf 1

Trotzdem Danke
Es funktioniert:

make 2>&1 | sed 's/:\([0-9]\+\):/(\1) :/g'

Jörg Wunsch
>(*) Eine vernünftige IDE kann man konfigurieren, wie die Fehlermeldungen 
aussehen.

Du willst damit nicht sagen, VS sei keine vernünftige IDE, oder?
Sicher mag sie nicht perfekt sein, aber das ist wohl dennoch eine der 
ausgereiftesten, komfortablesten (und verbreitetsten) IDEs für c/c++, 
die es gibt.
Hat halt jeder seine Vorlieben.
Und besser als AVR-Studio ist sie allemal.

Autor: Ahem (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>VS sei keine vernünftige IDE
Nun, ich pflege keine Unterhaltungen mit ihr zu führen oder ihr 
irgendwelche Urteile zu überlassen. Über ihre Vernunft kann ich also 
nichts sagen.

Aber, da VS genau auf C++ bzw, C# (kommt darauf an, von welcher Ausgabe 
wir hier reden) mit MFC, STL uswusf. ausgerichtet ist, beschränkt sich 
im Zusammenhang mit gcc die Brauchbarkeit auf Syntaxhighlighting, Sprung 
zur Fehlerstelle und einspielen in CVS, SVN uswusf.
Alles das aber kann ProgrammersNotepad genausogut.

Das kommt mir eher so vor als, wenn ich einen beliebigen Melkschemel zum 
Türdrücker umbaue. Es geht, aber ein originaler Türdrücker hätte es auch 
gleich getan.

Autor: vlad_tepesch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du hast intellisense vergessen. (besonders unter c#, oder auch für c und 
c++ mit visualAssist-Plugin)
Vergleichbar gutes habe ich bisher nur in Eclipse gesehen.
Eclipse find ich aber ein wenig zu träge, weswgen ich es nur für java 
benutze (was nicht sehr häufig haißt).

Autor: Ahem (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Du hast intellisense vergessen. (besonders unter c#, oder auch für c und >c++ mit 
visualAssist-Plugin)
Ich habe es nicht vergessen, sondern ignoriert.
Aber gut, wenn Du das haben willst.

Und was nutzt Dir das mit gcc?

Autor: vlad_tepesch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was soll der Kompiler damit zu tun haben?
Ist doch egal, ob ich den vs-compiler oder den gcc zum bauen benutze.
zum Coden kann ich doch trotzdem das studio benutzen. gerade wegen des 
intellisense, will ich das ja, weil es mich nervt jedesmal in den Head 
zu schauen, wie genau die funktion jetzt hieß und was sie für parameter 
bracuht.

Einizger nachteil ist, dass man das VS-projekt unabhängig vom Makefile 
pflegen muss, aber da ja außer am Anfang recht wenig Änderungen an der 
Projektstruktur gemacht werden, ist das auch nicht so schlimm.

Aber jetzt schluss mit dieser Sinnlos-Diskussion.
Du benutzt deinen vi, ich mein Studio und beide sind wir glücklich

Autor: Ahem (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  vlad_tepesch
Tut mir leid, wenn Du das als Kritik verstanden hast. So war das nicht 
gemeint und ich wollte Dich auch von nichts überzeugen. Meine Meinung 
darf ich aber sicher sagen.

Aber ich kann doch immer was dazu lernen, oder? So wie Du hier fragst, 
oder?

>Was soll der Kompiler damit zu tun haben?
Sicherlich nicht der Compiler selbst, aber die Libraries und Header 
werden ja andere sein. Der Sinn der Frage, was Dir das denn mit gcc 
nutzt, war, wie Du dem Intellisense beibringst diese zu verwenden. Ich 
räume aber ein, das ich das anders hätte formulieren können, so das man 
es nicht hätte als Ironie mißverstehen können.

Autor: vlad_tepesch (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
ich wollte auch dich nicht angreifen, sondern nur verhindern das der 
glaubenskrieg, ob MS vS nun gut ist, oder nicht, aufhört.

> wie Du dem Intellisense beibringst diese zu verwenden

zum beispiel mit der angehangenen Projektdatei.

im Studio ein neues Projekt erstellen "Makefile-projekt"
da gibt man die build commands (build, clean, rebuild) an.
und für das intellisense kann man außerdem noch die includepfade (zb zu 
dem winavr/avr/include - verzeichnis) und Präprozessor-defines angeben.

schon ist das erledigt - und es programmiert sich (meiner meinung nach) 
viel entspannter. Zur Makefile-Pflege und zum simulieren (falls doch mal 
nötig) benutze ich weiterhin das AVR-Studio

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
vlad_tepesch wrote:

> Und besser als AVR-Studio ist sie allemal.

Das würde ich auch nicht freiwillig benutzen, allerdings zum Teil
natürlich schon deshalb, weil ich gar kein Windows habe.  Zum
anderen Teil finde ich es in keinerlei Hinsicht wirklich eine
tolle Umgebung.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.