Forum: Compiler & IDEs Makefile prüfen ob Verzeichniss existiert -> anlegen


von Tobias (Gast)


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,



von Werner Hoch (Gast)


Lesenswert?

Folgende Shellbefehle sollten funktionieren:

  test -e abc || mkdir abc

MfG Werner


von chippy (Gast)


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 ;

von He Ro (Gast)


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

von Tobias (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.