Hallo Softwareentwickler, Ich habe mir in mühevoller Kleinarbeit ein Makefile erstellt welches ich als Basis für zukünftige Entwicklungen verwenden möchte. Beim kompilieren möchte ich meine Objectdateien und Executables in eigene Verzeichnisse vom Compiler ablegen lassen. Die Verzeichnisse in die ich die Objectdateien und Executables ablege definiere ich im Makefile als Variable. Bis jetzt muss ich wenn ich ein neues Project anlege die Verzeichnisse jedes mal von Hand anlegen. Wie prüfe ich in einem Makefile ob ein Verzeichniss schon existiert und wenn nicht, dass es automatisch von Make angelegt wird ? Noch was, ich benutze Cygwin und den Mingw-GCC Compiler sowie das make von Cygwin. Vielen Dank,
Folgende Shellbefehle sollten funktionieren: test -e abc || mkdir abc MfG Werner
So einfach ist das leider nicht. test -e STRING testet nur, ob STRING vorhanden ist. Dabei könne sich sich auch um eine Datei handeln. Du solltest also mit test -d STRING schauen ob der Ordner STRING vorhanden ist. Wenn nicht, testet man mit test -e STRING ob STRING vielleicht eine Datei ist und löscht sie gegebenenfalls (am besten nach Rücksprache mit dem Benutzer). Dann kann man der Ordner STRING erstellen.
1 | SOMETHING=dir |
2 | ANSWER=maybe |
3 | |
4 | if [[ ! -d $SOMETHING ]] |
5 | then |
6 | if [[ -e $SOMETHING ]] |
7 | then |
8 | echo "May I remove $SOMETHING?" ; |
9 | while [[ ! $ANSWER = "yes" ]] && [[ ! $ANSWER = "no" ]] |
10 | do |
11 | echo "Please answer 'yes' or 'no'" ; |
12 | read ANSWER ; |
13 | if [[ $ANSWER = "yes" ]] |
14 | then |
15 | rm -f $SOMETHING ; |
16 | mkdir $SOMETHING ; |
17 | fi ; |
18 | done ; |
19 | else |
20 | mkdir $SOMETHING ; |
21 | fi ; |
22 | fi ; |
...oder man nimmt einfach "mkdir -p" - das erstellt das gefragte Verzeichnis, wenn es noch nicht existiert. Wirft allerdings eine Fehlermeldung, wenn eine gleichnamige Datei existiert. Wer das ganz komfortabel haben will, kann da also noch eine Abfrage, ob die Datei gelöscht werden soll, einbauen - aber in einem neuen Source-Tree ist es ja doch eher unwahrscheinlich, dass da unpassende Dateien schon herumliegen. MfG, Heiko
Vielen Dank, Die Lösung mit "mkdir -p" hat mir weitergeholfen. Gruß Tobias
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.