Makefile "no rule to make target"

Life Sucks

Cadet 2nd Year
Registriert
Juli 2018
Beiträge
29
Makefile.PNG



****************************************************************
Immer wenn ich make all mache kommt die Meldung:
****************************************************************
die %.obj existiert aber warum kann er dies nicht finden??
20181228_171507[1].jpg
Makefile.PNG20181228_171507[1].jpg
 
mach mal einen kompletten Auszug von dem Ordner. aus deinem Screenshot geht nicht hervor, ob es die main.obj nun gibt oder nicht
 
  • Gefällt mir
Reaktionen: Life Sucks
Welche Quelltext-Dateien gibt es denn überhaupt? Ich rate mal:
  • main.cpp
  • sort.cpp sort.h
Wenn das so ist, dann gibt es kein main.h und das Makefile scheitert. So müßte es gehen:

Makefile:
CXX      = cl
CXXFLAGS = /EHsc /nologo
LD       = link
LDFLAGS  = /nologo
TARGET   = main.exe

HEADERS  = sort.h
OBJS     = main.obj sort.obj

all: $(TARGET)
.PHONY: all

clean:
    del $(OBJS)

distclean:
    del $(TARGET) $(OBJS)
.PHONY:    clean distclean

%.obj:    %.cpp $(HEADERS)
    $(CXX) $(CXXFLAGS) /c $<

$(TARGET): $(OBJS)
    $(LD) $(LDFLAGS) $^ /OUT:$@
Der Unterschied ist vor allem in: %.obj: %.cpp $(HEADERS), aber ich habe noch ein paar andere Fehler rausgeholt.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Life Sucks
Ich hab mittlerweile mein Problem lösen können, indem ich einfach folgende Veränderungen gemacht habe:

LD = linker war falsch.
Es müsste LD = link.

Dann hab ich noch eine extra Regel hinzugefügt:
main.obj: %.cpp
$(CXX) $(CXXFLAGS) /c $<

Danke für eure Hilfe.
 
  • Gefällt mir
Reaktionen: rg88
Life Sucks schrieb:
main.obj: %.cpp
$(CXX) $(CXXFLAGS) /c $<
OK, Du hast es "gelöst", aber die obere Zeile ist doppelt gemoppelt, da Du eh schon explizit für main.obj eine "Build-Regel" anführst -- und eigentlich auch schon weisst, dass main.obj nur von main.cpp kommen kann. %.cpp ist also "verwirrend". Da Du wahrscheinlich auch die Funktionen aus sort.cpp irgendwie in main.cpp verwenden willst, würde diese Abhängigkeitsregel in der Build-Regel für main.obj (zu sort.h) dort fehlen.
 
  • Gefällt mir
Reaktionen: rg88
Zurück
Oben