Forum: Compiler & IDEs #define values in neuen header portieren, Tool gesucht


von Marcel G. (master-cookie)


Lesenswert?

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.

: Bearbeitet durch User
von Staubfänger (Gast)


Lesenswert?

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?

von Kaj (Gast)


Lesenswert?

Einfach ein Merge-Tool nehmen, z.B. Meld oder WinMerge oder, oder, 
oder...

von Marcel G. (master-cookie)


Lesenswert?

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...

von Hmm... (Gast)


Lesenswert?

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.

von Staubfänger (Gast)


Lesenswert?

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.

von Hmm... (Gast)


Lesenswert?

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.

von Marcel G. (master-cookie)


Lesenswert?

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.

: Bearbeitet durch User
von Kommandozeile vor dem Frühstück für Alle! (Gast)


Lesenswert?

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...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.