www.mikrocontroller.net

Forum: Compiler & IDEs Makefile, bedingte Zuweisung einer Variablen?


Autor: Marc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Erstmal ein kraeftiges Hallo an alle, denn ich bin neu hier.  Das Forum 
macht einen tollen Eindruck, Glueckwunsch!

Und dann habe ich auch gleich eine Frage, die bei mir schon eine Weile 
ungeloest wartet - trotz Google :-)

Ich moechte in einem GNU makefile den Pfad meiner Toolchain zuweisen. 
Das makefile wird aber mal auf einem spanischen Windows (mit cygwin) 
ausgefuehrt, und dann wieder auf einem englischen.  Dank Bill Gates und 
seinen tollen Einfaellen ist der Pfad dann entweder:

  c:/Program files/GNUARM

oder

  c:/Archivos de programa/GNUARM

Jetzt brauche ich also eine bedingte Zuweisung, ala "if/then/else", 
kombiniert mit etwas wie einer "file exists" Funktion.  Leider konnte 
ich da in der Hilfe von make nichts passendes finden (ich benutze GNU 
make 3.79.1).

Alternativ habe ich dann versucht, die Pfad-Variable heranzuziehen, in 
der ja ebenfalls Hinweise auf die Sprachversion zu finden sein sollten. 
Auch das hat nicht funktioniert.  Da ich hier noch den code Schnipsel 
vorliegen habe, zitiere ich ihn mal kurz:

  ifeq ("rchivos de programa",$(findstring "rchivos de 
programa",$(PATH)))
    ARM_PATH =      c:/Archivos de programa/GNUARM
  else
    ARM_PATH =      c:/Program files/GNUARM
  endif

Wie gesagt, das hat ebenfalls nicht funktioniert.

Kann mir einer von Euch verraten, wie ich das Problem loesen kann?

Danke an alle die sich den Kopf zerbrechen..
Marc

Autor: Jojo S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ist die Environment Variable 'ProgramFiles' nicht auf beiden vorhanden? 
Normalerweise ist die in XP drin und zeigt auf den richtigen Pfad.
Das andere Beispiel: man muss nur mit den Leerzeichen im Namen 
aufpassen, da müssen vermutlich noch Anführungszeichen drumherum.

Autor: Marc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Jojos,

Leider gibt es diese Variable nicht, oder sie schafft es nicht in die 
cygwin bash Ebene hinein.

Deine Antwort hat mir aber trotzdem weitergeholfen, denn ich habe es 
nochmal ausfuehrlich ausprobiert.

Hier ist die Loesung, die funktioniert (glaube ich, denn ich sitze 
gerade nur am englischen Windows):

  ifeq ($(findstring rchivos de,$(PATH)),)
    ARM_PATH =      c:/Program files/GNUARM
  else
    ARM_PATH =      c:/Archivos de programa/GNUARM
  endif

Das Problem lag in der Syntax von ifeq und findstring.

Danke!!

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was spricht denn dagegen auf beiden Rechnern z.B.
einfach C:/GNUARM bei der Installation zu verwenden ?
Dann könntest du dir solche Klimmzüge sparen.

Autor: Marc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Was spricht denn dagegen auf beiden Rechnern z.B.
> einfach C:/GNUARM bei der Installation zu verwenden ?

Hallo Holger,

In diesem Fall spricht dagegen, dass die Toolchain bereits vor Beginn 
des Projekts installiert war.  Ich wuerde ungerne die Installation 
zweier einwandfrei funktionierender Arbeitsplaetze verhuntzen, nur weil 
dadurch ein Makefile simpler wird.

Danke trotzdem fuer den Hinweis!

Autor: Heiko_S (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
es gibt doch die Variable %ProgramFiles%, die für soetwas genommen 
werden könnte, nicht oder?

Autor: FBI (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

%ProgramFiles% gibts nur im "Command Prompt" von Windows. Unter 
Cygwin/bash gehts dann mit ${PROGRAMFILES} (alles groß!).

CU

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.