123 Stimmen

wie verhindert man den "directory already exists error" in einem makefile, wenn man mkdir benutzt

Ich muss ein Verzeichnis in meinem Makefile erzeugen und möchte nicht immer wieder die Fehlermeldung "Verzeichnis existiert bereits" erhalten, obwohl ich sie leicht ignorieren kann.

Ich benutze hauptsächlich mingw/msys, würde aber gerne etwas haben, das auch mit anderen Shells/Systemen funktioniert.

Ich habe es versucht, aber es hat nicht funktioniert. Irgendwelche Ideen?

ifeq (,$(findstring $(OBJDIR),$(wildcard $(OBJDIR) )))
-mkdir $(OBJDIR)
endif

11voto

Lee H Punkte 4945

In Ihrem Makefile:

target:
    if test -d dir; then echo "hello world!"; else mkdir dir; fi

10voto

wmad Punkte 101

Unter Windows

if not exist "$(OBJDIR)" mkdir $(OBJDIR)

Unter Unix | Linux

if [ ! -d "$(OBJDIR)" ]; then mkdir $(OBJDIR); fi

7voto

Michael McCarty Punkte 739
ifeq "$(wildcard $(MY_DIRNAME) )" ""
  -mkdir $(MY_DIRNAME)
endif

6voto

Martin Fido Punkte 1040
$(OBJDIR):
    mkdir $@

Das funktioniert auch für mehrere Verzeichnisse, z. B..

OBJDIRS := $(sort $(dir $(OBJECTS)))

$(OBJDIRS):
    mkdir $@

Hinzufügen von $(OBJDIR) als erstes Ziel funktioniert gut.

3voto

lygstate Punkte 556

Es funktioniert unter mingw32/msys/cygwin/linux

ifeq "$(wildcard .dep)" ""
-include $(shell mkdir .dep) $(wildcard .dep/*)
endif

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X