South_Bridge Skrevet 18. februar 2010 Del Skrevet 18. februar 2010 (endret) IDIR =../include CC=g++ CFLAGS=-I$(IDIR) ODIR=obj LDIR =../lib LIBS=-lm _DEPS = DEPS = $(patsubst %,$(IDIR)/%,$(_DEPS)) _OBJ = main.o OBJ = $(patsubst %,$(ODIR)/%,$(_OBJ)) $(ODIR)/%.o: %.cpp $(DEPS) $(CC) -c -o $@ $< $(CFLAGS) main: $(OBJ) gcc -o $@ $^ $(CFLAGS) $(LIBS) .PHONY: clean clean: rm -f $(ODIR)/*.o *~ core $(INCDIR)/*~ Jeg får ikke det ovenfor til å fungere skikkelig... ikke i det hele tatt faktisk. Får opp feilen: "... In function '_start': (.text+0.18): undefined reference to 'main' ..." Jeg ser ikke helt hva den skal mangle etter som litt googling sier jeg mangler noe. Endret 18. februar 2010 av South_Bridge Lenke til kommentar
NevroMance Skrevet 18. februar 2010 Del Skrevet 18. februar 2010 Vil tro det ikke er makefila di som er feil. Feilmeldingen din sier at du mangler en main funksjon i prosjektet ditt. Lenke til kommentar
South_Bridge Skrevet 18. februar 2010 Forfatter Del Skrevet 18. februar 2010 (endret) Veldig rart for jeg har nemlig dette i main.cpp: #include <iostream> int main() { std::cout << "Hello World"; return 0; } Endret 18. februar 2010 av South_Bridge Lenke til kommentar
South_Bridge Skrevet 18. februar 2010 Forfatter Del Skrevet 18. februar 2010 Det har ikke noe med strukturen på mappene mine da? At han ikke finner fila? Prosjekt -include -lib -src --obj main.cpp og makefila ligger i src Lenke til kommentar
NevroMance Skrevet 18. februar 2010 Del Skrevet 18. februar 2010 Og den kompilerer main.cpp? Lenke til kommentar
South_Bridge Skrevet 18. februar 2010 Forfatter Del Skrevet 18. februar 2010 nei... den ser ikke ut til å gjøre det larsey[~]: make g++ -o program -I ../include -lm /usr/lib/... In function '_start': (.text+0.18): undefined referende to 'main' collect2: ld returned 1 exit status make: *** [program] Error Lenke til kommentar
NevroMance Skrevet 18. februar 2010 Del Skrevet 18. februar 2010 Du kan legge til SRC = $(wildcard *.cpp) og endre main til. main: $(SRC) $(CC) -o $@ $(SRC) $(CFLAGS) $(LIBS) Tror det skal funke. Litt usikker på $@, men den kan du eventuelt endre til program eller hva enn du vil ha programmet til å hete. Lenke til kommentar
South_Bridge Skrevet 18. februar 2010 Forfatter Del Skrevet 18. februar 2010 ehm... EUREKA, det funker Jeg skjønner ikke helt hvorfor menne. Lenke til kommentar
NevroMance Skrevet 18. februar 2010 Del Skrevet 18. februar 2010 Du har ikke sagt hvilke filer som skal kompileres. Nå sier du at alle .cpp filene i mappa di skal kompileres. SRC = $(wildcard *.cpp) lager nemlig en liste over alle filene i mappa som slutter med .cpp og lagrer den i SRC variabelen, når du så legger til den lista i linjen som kompilerer, kompileres alle filene som slutter med .cpp Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå