#define values in neuen header portieren, Tool gesucht

OP #4567583
Sali zusammen,

es geht um die Firmware eines 3D Printers, welche eine config Datei 
beinhaltet:

https://github.com/Ultimaker/Ultimaker2Marlin/blob/master/Marlin/Configuration.h

Die define values sind alle abhängig von der Hardware.
Ursprünglich in der alten Version (firmware_k8200_marlinv2) sind die 
Parameter für meinen K8200 definiert. Wenn ich den aktuellen source 
downloade, müsste ich die ganzen Werte manuell abgleichen und übernehmen 
in die neue Config. Gibt es da ein Tool, welches alle define Parameter 
von Datei A in Datei B schreibt?

Oder ein Tool was jedes define eines Headers oder .C, in einem .CSV als 
Zeile mit Wert darstellt.

Besten Dank.
Gast
Die Frage ist überhaupt nur dann sinnvoll, wenn ein einfaches "copy" das 
Problem nicht löst. Aber sind Dir auch grep, sed, awk, perl oder 
reguläre Ausdrücke usw. ein Begriff?
Wenn ja: warum reichen die nicht? Was macht es, bzw. welche Umstände 
machen es notwendig, hier zu fragen?
OP
Ok, danke

- grep ist mir bekannt (müsste aber Schritt für Schritt jedes mal den 
Suchbefehl ändern für jedes define, copy paste und von vorne...)

- Merge tools kenne ich, danke habe ich probiert aber das ist nicht 
vollautomatisch.


Wenn ich was gefunden habe, wird's gepostet...
Gast
In einem Texteditor deiner Wahl (geany mag ich zum Beispiel ganz gerne) 
nach folgendem regulären Ausdruck suchen ohne die Anführungszeichen):

"^[ \t]{0,}#define"

Man kann das ganze in der Linux Kommandozeile aber noch ausbauen, schau 
dir mal das Manual zu grep an. Damit kann man wunderbar nach Dateien 
suchen die bestimmte Ausdrücke enthalten und diese auch gleich ausgeben 
oder in eine Datei umleiten.

Ob dir die defines bei deinem eigentlichen Problem helfen werden ist 
allerdings fraglich.
Gast
Ich verstehe das auch nicht so recht. Du hast doch geschrieben:
> Gibt es da ein Tool, welches alle define Parameter
> von Datei A in Datei B schreibt?

Danach müsstest Du mit grep (oder was auch immer) lediglich nach 
"#define" gefolgt von irgendwas (\\ lassen wir jetzt mal aus) suchen und 
das Ergebnis in die Datei B schreiben.

Falls nicht, dann fehlen noch Details zu dem Problem.
Gast
Nach kurzem Blick in dein configfile würde ich sagen die defines alleine 
helfen dir nicht weiter..

Ich würde eher nach den #ifdef Zeilen suchen und die passenden defines 
zur Steuerung des Preprocessor irgendwo ganz oben anlegen.

Die Anpassung des Suchausdrucks überlassen ich dir als kleine Übung.
OP
Gern ein genauerer Beschrieb:
> von Datei A (configuration.h - alt) in Datei B (configuration.h - neu) schreibt.

In der neuen config sind andere Werte der Defines, diese sollen durch 
Werte der Datei A ersetzt werden, ohne dass ich was manuell kopiere.

Ablauf:
- Finde das erste #Define mit Name X in Datei A und dessen Wert Y
- Suche in Datei B den Namen X und ersetze den Wert durch Y

- Wiederholung bis das letzte define in Datei A gefunden wurde, oder der 
Name in Datei B nicht vorhanden sei.


***

-Grep kann ich unter Windows auf die schnelle nicht nutzen, aber es ist 
schon ein gutes tool. (Die Ausgabe ist halt im Text format und nicht im 
CSV)
- "^[ \t]{0,}#define"
Werd ich mal morgen probieren über VM.
Gast
CygWin installiere ich als erstes, damitCygWin installiere ich als 
erstes, damit
> -Grep kann ich unter Windows auf die schnelle nicht nutzen, aber es ist
> schon ein gutes tool.
dies NICHT passieren kann.

Ich kann ohne (PC)REs keine Tastatur anfasse, da würde ich sterben...

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 10 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.