mikrocontroller.net

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


Autor: Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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,



Autor: Werner Hoch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Folgende Shellbefehle sollten funktionieren:

  test -e abc || mkdir abc

MfG Werner


Autor: chippy (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.
SOMETHING=dir
ANSWER=maybe

if [[ ! -d $SOMETHING ]]
then
    if [[ -e $SOMETHING ]]
    then
  echo "May I remove $SOMETHING?" ;
  while [[ ! $ANSWER = "yes" ]] && [[ ! $ANSWER = "no" ]]
  do
      echo "Please answer 'yes' or 'no'" ;
      read ANSWER ;
      if [[ $ANSWER = "yes" ]]
      then
    rm -f $SOMETHING ;
    mkdir $SOMETHING ;
      fi ;
  done ;
    else
  mkdir $SOMETHING ;
    fi ;
fi ;

Autor: He Ro (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank,

Die Lösung mit "mkdir -p" hat mir weitergeholfen.

Gruß Tobias

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.