Makefile, bedingte Zuweisung einer Variablen?

Gast #780440
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
Gast #780450
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.
Gast #780492
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!!
Gast #780671
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!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren