Hallo,
im qt-thread kamen wir wegen $QTDIR gerade zu Makefiles. Da ich gerade in
Fragelaune bin....
Ein hypothetisches Beispiel:
Ich baue ein Programm, dass zwei shared libs nutzt. Sagen wir mal glib und
gtk und ermittle irgendwie automatisch (z.B. per "(glib|gtk)-config
--libs" die nötigen Flags zum Linken. Fogendes soll dabei ermittelt
worden sein:
$ glib-config --libs
-L/usr/local/glib/lib -R/usr/local/glib/lib -lglib
$ gtk-config --libs
-L/usr/local/gtk/lib -R/usr/local/gtk/lib -lgtk
(Ich weiss, da kommen real eigentlich noch ne Menge andere libs raus und
eine solche Installation ist recht idiotisch. Das soll mal keine Rolle
spielen.)
Wenn ich die beiden Ausgabe einfach zusammenfuege erhalte ich:
LIBS=-L/usr/local/glib/lib -R/usr/local/glib/lib -lglib \
-L/usr/local/gtk/lib -R/usr/local/gtk/lib -lgtk
Ich will, dass das entstehende binary ohne Eintrag der beiden
lib-Verzeichnisse in /etc/ld.so.conf und ohne $LD_LIBRARY_PATH seine
libs zur Laufzeit in den beiden Verzeichnissen findet. Dazu kann ich
dem gcc ueber das Flag -R einen Pfad mitgeben, der als Suchpfad fuer
libs mit im binary gespeichert wird. Das war dir Vorrede :-)
Das dumme an der Sache ist, dass der gcc bei mehreren -R-Flags nicht alle
Suchpfade ins binary schreibt, sondern nur einen. Die jeweils andere
Bibliothek wird also zur Laufzeit nicht gefunden. Richtig waere in obigem
Beispiel, das binary mit "-R/usr/local/glib/lib:/usr/local/gtk/lib" zu
linken.
Ich suche nun eine elegante Möglichkeit, wie ich dieses Zusammenfassen der
Pfade hinter mehreren -R-Flags zu nur einem Flag im Makefile
automatisieren kann. Es ist kein Problem, dass Makefile mir einem
externen Perlskipt zu verbiegen. Ich suche aber eine Möglichkeit, das
irgendwie innerhalb von make evtl. mithilfe von Standardtools wie sed+awk
zu machen. Irgendwelche Ideen?
Reinhard
( gibt es einen Preis fuer die laengste Frage auf dieser Liste? :)