Problem mit der ultimativen Makefile
-
Wenn ich versuche folgendes Programm:
#include <iostream> using namespace std; int main() { cout<<"Hallo Welt"<<endl; system("pause"); };mit folgender (der ultimativen) Makefile:
TARGET := ./program CXXFLAGS := -g -W -Wall -Wno-long-long -pedantic -std=c++98 CXX := g++ LIBS := EXT := cpp BUILDDIR := build override BUILDDIR := $(strip $(BUILDDIR)) SOURCES := $(wildcard *.$(EXT)) OBJECTS := $(patsubst %.$(EXT), $(BUILDDIR)/%.o, $(SOURCES)) DEPS := $(patsubst %.$(EXT), $(BUILDDIR)/%.dep, $(SOURCES)) .PHONY: all all: $(TARGET) $(TARGET): $(OBJECTS) $(DEPS) $(CXX) $(CXXFLAGS) -o $(TARGET) $(OBJECTS) $(LIBS) ifneq ($(MAKECMDGOALS), clean) -include $(DEPS) endif $(OBJECTS): $(BUILDDIR)/%.o: %.$(EXT) $(BUILDDIR)/%.dep $(BUILDDIR)/.tag $(CXX) $(CXXFLAGS) -c $< -o $@ $(DEPS): $(BUILDDIR)/%.dep: %.$(EXT) $(BUILDDIR)/.tag $(CXX) $(CXXFLAGS) -MM $< -MT $@ -MT $(<:.$(EXT)=.o) -o $@ %.tag: mkdir -p $(dir $(@)) touch $@ .PHONY: clean clean: rm -rf $(BUILDDIR)zu kompilieren bekomme ich folgenden Fehler:
C:\Dokumente und Einstellungen\meinname\Desktop>mingw32-make mkdir -p build/ Syntaxfehler. mingw32-make: *** No rule to make target `build/main.dep', needed by `build/main .o'. Stop.Könnte mir BITTE jemand erklären was ich falsch mache?
-
kann mir denn niemand weiterhelfen
? Ich benutze mingw 5.3.1
-
LOL.
Die marginale Aussage: "Syntaxfehler." wird bei mir im gleichen Hirnlappen verarbeitet wie: "Speicherzugriffsfehler." Beide mit Punkt am Ende. Das wars.
Soviel sei verraten: das sind beide betriebssystem-nahe Meldungen. Deine Meldung kommt von cmd.exe, weil es die Anweisung "mkdir -p build/" infolge des falschen Pfadseparators nicht versteht. Weg mit ihm!
-
was ist ein Pfadseperator?
-
Der Slash. (Sorry, hat ein bißchen gedauert)