• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

sed-Problem in Makefile

Hi,

ich habe ein Problem mit einer Makefile. Um die depend files zu erzeugen steht in der Makefile folgendes:

Code:
depend : $(sd)

$(DEPENDDIR)/%.d : %.cpp
  @echo create dependencies for $<
  @$(SHELL) -ec '$(CXX) -M $(CXXFLAGS) $(IDIR) $< \
                       | sed -e "s/$*\.o/$(OBJDIR)\/$*\.o/1" > .tmpfile; \
                       cp -f .tmpfile $@;'

make erzeugt dann folgenden Fehler:

sed: -e Ausdruck #1, Zeichen 22: unknown option to `s'
make[1]: *** [dep/tinyxml/tinystr.d] Fehler 1

Die Anweisung @$(SHELL) -ec '$(CXX) ... usw. habe ich mit @echo $(SHELL) -ec '$(CXX) ... mal ausgeben lassen. Dies ergibt:

create dependencies for tinyxml/tinystr.cpp
/bin/sh -ec g++ -M -pipe -w -O3 -funroll-loops -fexpensive-optimizations -DDEBUG -g -DGCC_3 -DOS_LINUX -I/home/usw/src/io -I/home/usw/src/main -I/home/usw/src/market -I/home/usw/src/utilities -I/home/usw/src/third tinyxml/tinystr.cpp | sed -e "s/tinyxml/tinystr\.o/obj\/tinyxml/tinystr\.o/1" > .tmpfile; cp -f .tmpfile dep/tinyxml/tinystr.d;

Ich hab mir ein Tutorial zu sed angeschaut, komme aber nicht dahinter. Kann mir jemand einen Tipp geben?

Gruß, M.B.
 
Martin Baumann schrieb:
sed -e "s/tinyxml/tinystr\.o/obj\/tinyxml/tinystr\.o/1"
Hier sind ein paar slashes zu viel drin. Die müssten irgendwie mit Backslash maskiert werden. Wahrscheinlich müsste es richtig heißen:
sed -e "s/tinyxml\/tinystr\.o/obj\/tinyxml\/tinystr\.o/1

Einfach $* in eine andere Varialbe schreiben und dabei Slash durch Backslash+Slash ersetzen. Wobei ich mich auch frage: Ist $* (=alle Eingabeparameter) überhaupt richtig?
 
Oben