Nybörjarfråga om Makefile
Postat: 11 jul 2008, 19:50
Det går lite (väldigt lite, men bättre än inget) framåt i programmerandet och nu har jag tänkt börja använda make vid kompileringen. Hittade en sida på svenska som förklarar lite enkelt ungefär hur det hela kan gå till. Hittade dock ett och annat litet fel där, men jag tror jag fick ordning på det mesta till slut.
På sidan hittar man följande exempel:
Då jag redan hade ett litet nybörjarprogram på tre filer tänkte jag att det kunde vara lämpligt att testa på dessa och min Makefile ser därför ut så här (efter ändringar för anpassning till mina filnamn samt efter att ha lagt till någon rad som saknades i originalet, men som jag tror måste vara med):
Kan förresten säga att jag försökte få texten att tabba rätt så att man får snygga marginaler och så, men det här forumet är tydligen helt felgjort vad gäller tabbar. Det verkar som om tabbstoppen är slumpvis utvalda och olika på alla rader dessutom, så trots mycket nerlagd tid fick jag det inte att se ut som i min texteditor (Emacs). Tycker nog det gamla forumet var klart bättre på det mesta, om än inte på allt, men nu snackar vi ju Makefile här, så skit i det nu.
Var var jag nu? Jo, min Makefile fungerar allt som den ska när jag kompilerar; programmet kompileras som det ska och det hela fungerar perfekt i alla sin simpelhet.
Dock fungerar inte de sista raderna, de om printfiles. Jag får följande felmeddelande när jag kör make printfiles i en terminal (givetvis står jag i rätt mapp och så vidare):
Då jag, som sagt, redan hittat några fel på sidan, antar jag att något ytterligare saknas för att just denna lilla ”finess” ska fungera. Sidan är ju dessutom skriven på halvdålig svenska (exempelvis ”beror på” istället för ”beror av” eller ”är beroende av”), så man blir ju lite allmänt skeptisk och funderar på om även annat än själva språket kanske är lika halvdåligt…
Någon som ser något uppenbart fel? Jag är ju nybörjare så jag skulle nog inte se felet om det så bländade mig…
På sidan hittar man följande exempel:
Kod: Markera allt
CFILES = main.c work.c # Här definierar vi upp variabler
HFILES = work.h # som innehåller de filer som
OFILES = main.o work.o # ingår i programmet.
CC = cc # Genom att lägga namnet på c-kompilatorn i en
# variabel kan man lätt byta kompilator.
CCFLAGS = -O # Anger vilka flaggor som skall skickas
# till kompilatorn
# Make har inbyggda suffixregler för bl a c-filer.
prog : $(OFILES)
$(CC) $(CCFLAGS) -o prog $(OFILES)
main.o: main.c work.h
work.o: work.c work.h
clean: rm $(OFILES)
printfiles: $(CFILES) $(HFILES)
print $?
touch printfiles
Kod: Markera allt
CXXFILES = file1.c++ file2.c++
HFILES = coordin.h
OFILES = file1.o file2.o
.SUFFIXES: .o .c++
.c++.o:
g++ -c $*.c++
CXX = g++
CXXFLAGS = -O
RectToPolar: $(OFILES)
$(CXX) $(CXXFLAGS) -o RectToPolar $(OFILES)
file1.o: file1.c++ coordin.h
file2.o: file2.c++ coordin.h
clean:
rm $(OFILES) *~
printfiles: $(CXXFILES) $(HFILES)
print $?
touch printfiles
Var var jag nu? Jo, min Makefile fungerar allt som den ska när jag kompilerar; programmet kompileras som det ska och det hela fungerar perfekt i alla sin simpelhet.
Dock fungerar inte de sista raderna, de om printfiles. Jag får följande felmeddelande när jag kör make printfiles i en terminal (givetvis står jag i rätt mapp och så vidare):
Kod: Markera allt
Error: no "print" mailcap rules found for type "text/x-c++src"
make: *** [printfiles] Fel 3
Någon som ser något uppenbart fel? Jag är ju nybörjare så jag skulle nog inte se felet om det så bländade mig…