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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren