if then im Makefile
if then im Makefile
Hallo,
ich komme einfach nicht weiter....
Habe ein Makefile, welches Debian und OpenSuse unterscheiden soll.
1. ifeq hab ich jetzt hinbekommen, dass es am Zeilenanfang stehen muss.
2. Er meckert immer irgendetwas an der folgenden if Anweisung. Ich hab schon sämtliche \ ; Kombinationen ausprobiert. Ich weiss
einfach nicht was er will. Meist kommt:
if [ -e "/etc/lsb-release" ];\
then\
../shtool install -c -m 700 init/debian/initscript /etc/init.d/initscript\
else\
../shtool install -c -m 700 init/opensuse/initscript /etc/init.d/initscript\
fi;
/bin/sh: -c: line 6: syntax error: unexpected end of file
ifeq ($(shell uname -s),Linux)
$(SHTOOL) mkdir -f -p -m 755 (sysconfdir)/init.d;
if [ -e "/etc/lsb-release" ];\
then\
$(SHTOOL) install -c -m 700 init/debian/initscript $(sysconfdir)/init.d/initscript\
else\
$(SHTOOL) install -c -m 700 init/opensuse/initscript $(sysconfdir)/init.d/initscript\
fi;
endif
initscript steht für mein Programminitscript
Bitte woran kann es liegen?
gruss yonah
ich komme einfach nicht weiter....
Habe ein Makefile, welches Debian und OpenSuse unterscheiden soll.
1. ifeq hab ich jetzt hinbekommen, dass es am Zeilenanfang stehen muss.
2. Er meckert immer irgendetwas an der folgenden if Anweisung. Ich hab schon sämtliche \ ; Kombinationen ausprobiert. Ich weiss
einfach nicht was er will. Meist kommt:
if [ -e "/etc/lsb-release" ];\
then\
../shtool install -c -m 700 init/debian/initscript /etc/init.d/initscript\
else\
../shtool install -c -m 700 init/opensuse/initscript /etc/init.d/initscript\
fi;
/bin/sh: -c: line 6: syntax error: unexpected end of file
ifeq ($(shell uname -s),Linux)
$(SHTOOL) mkdir -f -p -m 755 (sysconfdir)/init.d;
if [ -e "/etc/lsb-release" ];\
then\
$(SHTOOL) install -c -m 700 init/debian/initscript $(sysconfdir)/init.d/initscript\
else\
$(SHTOOL) install -c -m 700 init/opensuse/initscript $(sysconfdir)/init.d/initscript\
fi;
endif
initscript steht für mein Programminitscript
Bitte woran kann es liegen?
gruss yonah
Re: if then im Makefile
Rücke dein Skript mal mit Tabulatoren ein.
Formerly known as Trigger.
HP 8510p - Debian Sid
Mitglied des Debian-KDE-Teams
HP 8510p - Debian Sid
Mitglied des Debian-KDE-Teams
-
- Beiträge: 1581
- Registriert: 01.05.2004 13:21:26
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: DE
Re: if then im Makefile
Wie armin schon andeutet, mangelt es dem Skript an der richtigen Einrückung. Falls nur die Foren-Software die geschluckt hat, es gibt für das Schreiben von Quell-Code eigene code-tags:
[/code]
Dein make-Schnipsel etwas umformatiert funktioniert hier erwartungsgemäß
In deiner ersten Zeile nach dem ifeq fehlt zudem ein Dollar-Zeichen.
ciao, storm
Code: Alles auswählen
[code] ...
Dein make-Schnipsel etwas umformatiert funktioniert hier erwartungsgemäß
Code: Alles auswählen
ifeq ($(shell uname -s),Linux)
$(SHTOOL) mkdir -f -p -m 755 $(sysconfdir)/init.d;
if [ -e "/etc/lsb-release" ]; then $(SHTOOL) \
install -c -m 700 init/debian/initscript $(sysconfdir)/init.d/initscript \
else $(SHTOOL) install -c -m 700 init/opensuse/initscript $(sysconfdir)/init.d/initscript; fi;
endif
ciao, storm
drivers/ata/libata-core.c: /* devices which puke on READ_NATIVE_MAX */
Re: if then im Makefile
Danke erstmal für die Hilfe, ich probiere es morgen gleich mal aus.
yonah
yonah
Re: if then im Makefile
Hallo,
ich hab es jetzt ausprobiert, es kommt zwar keine Fehlermeldung mehr, aber die if then Anweisung wird auch nicht ausgeführt.
Sie erscheint als Quelltext an der Konsole wenn ich make aufrufe. Woran könnte das liegen? Ich hab es auch mit @if probiert, weil ich das irgendwo sah, aber auch das hilft nicht.
gruss yonah
ich hab es jetzt ausprobiert, es kommt zwar keine Fehlermeldung mehr, aber die if then Anweisung wird auch nicht ausgeführt.
Sie erscheint als Quelltext an der Konsole wenn ich make aufrufe. Woran könnte das liegen? Ich hab es auch mit @if probiert, weil ich das irgendwo sah, aber auch das hilft nicht.
gruss yonah
Re: if then im Makefile[gelöst]
Dein make-Schnipsel etwas umformatiert funktioniert hier erwartungsgemäß
[/quote]
So bringt es beim Compilieren keine Fehler, aber es geht nicht. Es fehlt noch ein ;
Jetzt geht es, danke.
Code: Alles auswählen
ifeq ($(shell uname -s),Linux)
$(SHTOOL) mkdir -f -p -m 755 $(sysconfdir)/init.d;
if [ -e "/etc/lsb-release" ]; then $(SHTOOL) \
install -c -m 700 init/debian/initscript $(sysconfdir)/init.d/initscript \
else $(SHTOOL) install -c -m 700 init/opensuse/initscript $(sysconfdir)/init.d/initscript; fi;
endif
So bringt es beim Compilieren keine Fehler, aber es geht nicht. Es fehlt noch ein ;
Code: Alles auswählen
install -c -m 700 init/debian/initscript $(sysconfdir)/init.d/initscript; \
-
- Beiträge: 1581
- Registriert: 01.05.2004 13:21:26
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: DE
Re: if then im Makefile
Es wäre gut zu wissen, für was SHTOOL bei dir steht. Im folgenden Schnipsel hab ich mal "/bin/sh -c" angenommen:
Das funktioniert, nur dass ich die Argumente von "sh -c" quoten musste, weil sonst fehlende operanden von mkdir bzw. install angekreidet wurden.
Der nächste Abschnitt funktioniert ebenso. Beachte das fehlende Fortsetzungszeichen in der zweiten Zeile und die weggefallenen Aufrufe von SHTOOL.
Das @ am Anfang einer Zeile bedeutet nur, dass der darauf folgende Befehl nicht ausgeben wird.
Code: Alles auswählen
ifeq ($(shell uname -s),Linux)
$(SHTOOL) "mkdir -p -m 755 $(sysconfdir)/init.d"; \
if [ -e "/etc/lsb-release" ]; then $(SHTOOL) \
"install -m 700 init/debian/initscript $(sysconfdir)/init.d/initscript"; \
else $(SHTOOL) "install -m 700 init/opensuse/initscript $(sysconfdir)/init.d/initscript"; fi;
endif
Der nächste Abschnitt funktioniert ebenso. Beachte das fehlende Fortsetzungszeichen in der zweiten Zeile und die weggefallenen Aufrufe von SHTOOL.
Code: Alles auswählen
ifeq ($(shell uname -s),Linux)
$(SHTOOL) "mkdir -p -m 755 $(sysconfdir)/init.d";
if [ -e "/etc/lsb-release" ]; then \
install -m 700 init/debian/initscript $(sysconfdir)/init.d/initscript; \
else install -m 700 init/opensuse/initscript $(sysconfdir)/init.d/initscript; fi;
endif
drivers/ata/libata-core.c: /* devices which puke on READ_NATIVE_MAX */
-
- Beiträge: 1581
- Registriert: 01.05.2004 13:21:26
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: DE
Re: if then im Makefile[gelöst]
Da war ich etwas spät dran.yonah hat geschrieben:Jetzt geht es, danke.
drivers/ata/libata-core.c: /* devices which puke on READ_NATIVE_MAX */