C++ makefile
C++ makefile
Ahojte, robim smestralku do skoly, a podmienkou je vytvorit si vlastny makefile. No nikdy nas to neucili, a fakt netusim ako na to. Mam v podstate 4 hlavickove + 4 cpp + 1 main. Viete mi niekto poradit, ako na to? Je to zlozite? Dakujem vopred.
Re: C++ makefile
https://www.google.com/webhp?sourceid=c ... 20tutorial
napr hneď tu to máš celkom pekne http://mrbook.org/tutorials/make/
Naštuduj si to a keď ti niečo konkrétne nebude jasné, napíš znovu.
napr hneď tu to máš celkom pekne http://mrbook.org/tutorials/make/
Naštuduj si to a keď ti niečo konkrétne nebude jasné, napíš znovu.
Re: C++ makefile
Diky za odpoved, nieco som vytvoril, vyzera, ze to funguje, myslis, ze je to v pohode?
//autoeditácia príspevku (03 Jún 2014, 12:32)
Mimochodom vypisalo mi tam nejake chyby, ktore mam zrejme v kode, a nakoniec tieto dva riadky, co to je?
Kód: Vybrať všetko
FLAGS=-Wall -pedantic -Wno-long-long -O0 -ggdb
all: art
art: main.o load.o save.o canvas.o ascii.o
g++ main.o load.o save.o canvas.o ascii.o -o art
main.o: main.cpp
g++ $(FLAGS) main.cpp
load.o: load.cpp
g++ $(FLAGS) load.cpp
save.o: save.cpp
g++ $(FLAGS) save.cpp
canvas.o: canvas.cpp
g++ $(FLAGS) canvas.cpp
ascii.o: ascii.o
g++ $(FLAGS) ascii.cpp
clean:
rm -rf *o artMimochodom vypisalo mi tam nejake chyby, ktore mam zrejme v kode, a nakoniec tieto dva riadky, co to je?
Kód: Vybrať všetko
collect2: error: ld returned 1 exit status
make: *** [main.o] Error 1
Re: C++ makefile
V tovrbe jednotlivých object fajlov ti chýba prepínač -c, ktorý práve zaistí, že sa to skompiluje do object fajlu. Takto ti to zrobí 5 spustiteľných súborov a potom linker potrebné .o súbory nikde nenájde (ld je linker, takže je to chyba linkera).
Môžeš pridať aj prepínač -o a definovať názov object fajlu sám, pre 100% istotu.
Tiež by som ešte do závislostí pridal aj hlavičkové súbory, nech sa ti to prekompiluje aj v prípade, že zmeníš nejaký header.
Môžeš pridať aj prepínač -o a definovať názov object fajlu sám, pre 100% istotu.
Tiež by som ešte do závislostí pridal aj hlavičkové súbory, nech sa ti to prekompiluje aj v prípade, že zmeníš nejaký header.
Re: C++ makefile
super, s tym -c to uz funguje, dik. Tie hlavickove subory myslis takto?
Kód: Vybrať všetko
canvas.o: canvas.hpp canvas.cppRe: C++ makefile
ok dakujem este raz velmi pekne 
Re: C++ makefile
Ale mam tu este problem nejak to nefunguje
nic ine som nemenil, len pridal tie hlavickove subory, netreba ich dopisat este niekde inde?
\\edit: prikaz make clean to vyriesil.
Kód: Vybrať všetko
make: Nothing to be done for `all'.\\edit: prikaz make clean to vyriesil.
Re: C++ makefile
Tá veta "make: Nothing to be done for `all'." je správne. Makefile je na to, aby si nemusel furt kompilovať to isté. Ak spustíš make prvý raz, skompiluje sa všetko. Potom už sa kompiluje len ten súbor, v ktorom niečo zmeníš.
Skús dať make, potom znovu (zobrazí sa noting to be done) a potom upraviť nejaký súbor a znovu make. Ak ti to funguje správne, mal by sa skompiliť len ten jeden súbor a znovu zlinkovať.
Skús dať make, potom znovu (zobrazí sa noting to be done) a potom upraviť nejaký súbor a znovu make. Ak ti to funguje správne, mal by sa skompiliť len ten jeden súbor a znovu zlinkovať.