Makefile prüfen ob Verzeichniss existiert -> anlegen

Gast #535726
Lesenswert?
• ▲
▼
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,


Gast #535914
Lesenswert?
• ▲
▼
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 ;
Gast #535978
Lesenswert?
• ▲
▼
...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

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.