makefile: Variable anlegen und darin gespeicherten String im Pfad nutzen

bandchef

Lt. Commander
Registriert
Juli 2016
Beiträge
1.648
Hallo,

ich möchte in einem .mk File eine neue Variable anlegen, darin den String "test" speichern und in einem Pfad nutzen damit man dynamisch vor dem Aufruf ohne große Mühe den Pfad verändern kann:

Beispiel:

# Neuer Pfad
xyz := test

# Kopiere Files
@/bin/cp -f $(MY_PATH)/1/2/3/xyz/abc.S19 $(MY_PATH)/$(DEV_DIR)/1/2/;


Kann das so funktionieren, oder muss ich vor dem fettgeschriebenen xyz (die angelegte Variable mit String "test") noch irgendwas davor schreiben? Das $ Zeichen z.B.?
 
Ich möchte den Pfad abhängig von xyz ändern können. Da ich mehrere Pfade (>30) habe, ist der Weg über eine Variable einfacher, als 30x den Unterordner (hier mit test bezeichnet) zu ändern und natürlch ist "test" einfach nur als Test gewählt und die echte Implementierung sieht anders aus!

Es soll mir einfach den Umgang mit unterschiedlichen .s19 Files vereinfachen, die beim Build berücksichtigt werden sollen.
 
Zuletzt bearbeitet:
nutrix schrieb:
Ah, da war, der treffende Hinweis drin, wie ich eine Variable in einen Pfad einbaue, nämlich mit $([var]). Bedeutet für meinen Code dann:

# Neuer Pfad
xyz := test

# Kopiere Files
@/bin/cp -f $(MY_PATH)/1/2/3/$(xyz)/abc.S19 $(MY_PATH)/$(DEV_DIR)/1/2/;
Der Pfad der daraufhin benutzt wird, sollte dann so aussehen:
$(MY_PATH)/1/2/3/test/abc.S19
Ergänzung ()

nutrix schrieb:
Willst oder mußt Du das dynamisch zur Laufzeit machen?
Was meinst du hier mit dynamisch zur Laufzeit machen? Das .mk mit der Änderung wird ja von mir vor dem Build auf das entsprechende gesetzt? Dynamisch zur Laufzeit ist da doch dann nix, oder?
 
bandchef schrieb:
Was meinst du hier mit dynamisch zur Laufzeit machen? Das .mk mit der Änderung wird ja von mir vor dem Build auf das entsprechende gesetzt? Dynamisch zur Laufzeit ist da doch dann nix, oder?
So nicht, ja, aber Du kannst ja auch make Parameter direkt übergeben, so daß Du es nicht immer von Hand machen mußt. Du kannst auch make über mehrere Stufen machen (make mit make aufrufen), oder noch weiter gedacht, Du verwendest moderner Build Tools wie Ant, Maven und Co.

Wenn Du es "simpel" haben möchtest, ein 2. makefile, wo Du alle Pfade mit Schalter für das letzte make steuerst. Oder noch besser, Du machst das 2. makefile, was immer über alles rübergeht, und dann werden immer nur Änderungen in den jeweiligen Pfaden entsprechend neu gestartet bzw. neu kompiliert.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: bandchef
Zurück
Oben