Forum: Mikrocontroller und Digitale Elektronik shell Ausgabe in Variable


von Steffen W. (surrounder)


Lesenswert?

Hallo Forum,

ich arbeite unter Windows mit Eclipse und einem eigenen makefile (ich 
verwende GNU make 3.81)

Nun würde ich gerne einen DOS Befehl ausführen und die Ausgabe die 
normal auf dem Bildschirm erfolgt in eine Variable umleiten.

Meinem Verständis nach sollte das doch wie folgt funktionieren:

DUMMY := $(shell cd)

ich bekomme dann aber die folgende Fehlermeldung und kann mir nicht mehr 
erklären was ich falsch mache

******

DUMMY := C:\Projekte\ProgTest
process_begin: CreateProcess(NULL, DUMMY := C:\Projekte\ProgTest, ...) 
failed.
make (e=2): Das System kann die angegebene Datei nicht finden.

make: *** [all] Error 2

******

Hat mir jemand einen Tip? Vielen Dank

Steffen

von No (Gast)


Lesenswert?

Vielleicht statt dem Programm in der Shell aufrufen, eine Batchdatei, 
die dir alles erledigt?

von Steffen W. (surrounder)


Lesenswert?

ich bräuchte aber das was ich da zurück bekomme im makefile um es dann 
beim linken zu verwenden. Deshalb kann ich das nicht komplett in einer 
Batch machen.

von maker (Gast)


Lesenswert?

Steffen Walter schrieb:
> DUMMY := $(shell cd)

> DUMMY := C:\Projekte\ProgTest

Ich interpretiere das so, dass "shell" auf deiner Plattform dein 
bevorzugtes CLI aufruft (cmd.exe?). "shell cd" liefert offenbar das 
aktuelle Verzeichnis zurück, scheint also zu klappen.

> make (e=2): Das System kann die angegebene Datei nicht finden.

Wo/wie verwendest du DUMMY?


Gruesse

von maker (Gast)


Lesenswert?

Sehe gerade, dass "shell" eine interne Funktion ist, FYI:

http://www.chemie.fu-berlin.de/chemnet/use/info/make/make_8.html

von Steffen W. (surrounder)


Lesenswert?

ja genau so interpretiere ich das auch, ja genau sollte die cmd.exe 
sein, und cd liefert das aktuelle Verzeichnis zurück. Ich habe hier als 
Beispiel "cd" verwendet, Befehl sollte ja egal sein.

Ziel ist dass der Pfad (den er ja auch ausgibt) nachher in der Variablen 
"DUMMY" steht.

Ich verwenden DUMMY momentan sonst noch nirgends. Für mich wirkt das 
immer so als ob er nun versucht einen Befehl "DUMMY" auszuführen, 
anstelle diese als Variabel zu betrachten

von Steffen W. (surrounder)


Lesenswert?

danke für den Link, aber auch nach der Beschreibung

contents := $(shell cat foo)

sets contents to the contents of the file `foo', with a space (rather 
than a newline) separating each line.


müsste doch nach dem ausführen von meinem makefile in DUMMY ein Wert 
stehen oder verstehe ich das auch falsch?

von Rolf Magnus (Gast)


Lesenswert?

Evtl. ein Problem mit den Backslashes. Versuch's mal mit 
Anführungszeichen um das $(shell).

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.