Bash-Befehle in Makefile

1820
Umar

Ich möchte Bash-Befehle in Makefile zusammen mit MATLAB-Skripts verwenden. Momentan, wenn ich einen einfachen bash-Befehl in Makefile setze und dieses Ziel ausführte, erhalte ich eine Fehlermeldung

/ bin / bash: ./test1: Keine Datei oder Verzeichnis

Ich habe einen einfachen Bash-Befehl verwendet

satuaratedrate: bash -c "cd ~/Desktop/r4/saturatedrate/iperf_s"; echo "I'm in some_dir"; ./test1; echo "is it working" 

Ich habe auch am SHELL := /bin/bashAnfang der Make-Datei eingefügt, wie hier vorgeschlagen, indem Sie die Link-Beschreibung eingeben

Ich verwende Mac OsX

1
Sehen Sie sich ein Tutorial im Internet an, wie ein Makefile erstellt wird. [ZB hier] (http://www.cs.swarthmore.edu/~newhall/unixhelp/howto_makefiles.html). Nimm ein funktionierendes Makefile und modifiziere es. Normalerweise ist es gemütlicher. BTW poste deine gesamte Makefile-Datei, damit du sie überprüfen kannst. Hastur vor 9 Jahren 1

1 Antwort auf die Frage

2
suspectus

Das Semikolon beendet einen Bash-Befehl. Also bash -c "cd ~/Desktop/r4/saturatedrate/iperf_s"; startet eine Bash-Shell und beendet den cdBefehl. Dann der Echo-Befehl und dann der Test1-Befehl - aber Test1 ist nicht im aktuellen Verzeichnis vorhanden. Denken Sie daran, dass der Shell-Befehl, der den cdBefehl ausgegeben hat, beendet wurde.

Dieser make-Befehl sollte test1 aufrufen:

saturatedrate: bash -c "cd ~/Desktop/r4/saturatedrate/iperf_s/test1";  
Wenn ich diesen Befehl teste, der in 'code' ~ / Desktop / r4 / gesättigte Rate / iperf_s gestellt wird, wird das aktuelle Verzeichnis ausgeführt, in dem der Befehl ausgeführt wird. Ich möchte, dass test1 in diesem Verzeichnis "~ / Desktop / r4 / gesättigte Rate / iperf_s /" ausgeführt wird. Umar vor 9 Jahren 0
`bash -c" cd ~ / Desktop / r4 / gesättigte Rate / iperf_s && ./test1 "` funktioniert @suspectus, vielen Dank Umar vor 9 Jahren 1
@Umar - Ich bin froh zu hören, dass Sie jetzt arbeiten. suspectus vor 9 Jahren 0