South_Bridge Skrevet 18. februar 2010 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
NevroMance Skrevet 18. februar 2010 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.
South_Bridge Skrevet 18. februar 2010 Forfatter 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
South_Bridge Skrevet 18. februar 2010 Forfatter 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
South_Bridge Skrevet 18. februar 2010 Forfatter 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
NevroMance Skrevet 18. februar 2010 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.
South_Bridge Skrevet 18. februar 2010 Forfatter Skrevet 18. februar 2010 ehm... EUREKA, det funker Jeg skjønner ikke helt hvorfor menne.
NevroMance Skrevet 18. februar 2010 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
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å