Makefile-t készíteni - verem túlcsordulás az orosz

Megpróbálja megérteni az írás írástudó, hogy a fájl, ez a pokol.

Vannak fájlok: SubClass.h / cpp, SuperClass.h / .cpp main.cpp.

Szerkesztettem makefile:

Cool automatizálni, és ossza könyvtárak / h / cpp / o fájlokat.

Talált egy jó módja annak, hogy függőséget (a közé bash hozzáadjuk a make)

És ez szükséges, hogy a kipufogó volt SubClass.o: SubClass.cpp SubClass.h SuperClass.o. Nem értem, hogyan elérni ezt a segítségével make? Én egyértelműen csinál valamit rosszul.

Keresztül wildecard Megtanultam, hogy egy listát a mappában lévő fájlok de almappákat hasonló (találják magukat almappákat, stb)?

Ez olyan egyszerű és népszerű modell a projekt szervezet, nem kell semmit kész? Talán írok egy kerékpárt. D

PS: Nem azt kérem, hogy írjon valamit rólam, csak ki kell menni a helyes irányba.

És ez szükséges, hogy a kipufogó volt SubClass.o: SubClass.cpp SubClass.h SuperClass.o

És miért? Miért újrafordítás SuperClass.cpp újrafordítani SubClass.cpp?

Miért nem így:

g ++ maga is generál fájlok függőségek (.D).

Ez általában építeni minden .o fájl, amely végrehajtja a g ++ -MMD paramétert. amely létrehoz egy fájlt függőségek (nincs rendszer fájlokat). Regenerálódni fájlok függőségek csak akkor, ha megváltoztatja a forrást.

= Objs, deps = létrehoz egy listát a fájlokat a beépített lehetővé teszik csere

$ @ $ És<так называемые "автоматические переменные". $<- имя первой зависимости (first prerequisite). $@ - имя цели для правила (выходного файла) (target file name).

$ @ = Hello.o - a kimeneti fájl nevét. $<= hello.c hello.h - входные файлы

Az utolsó sorban a Makefile ugyanúgy tartalmaz fájlokat függőségek (- a sor elejére jelenti hogy figyelmen kívül hagyja a hibát.

Általában viszonylag ritkán írni makefile, és minden úgy tűnt, hogy elsajátította a „mágikus”, és arra törekszik, hogy a hat hónapos elpárologni a fejéből. Szóval igyekszem írni egy egyszerű Makefile, mint ez (az Ön esetében).

Sor után függ függőségek .o honnan .h hozzáteszi makedepend csapat (a @ jel előtt azt elnyomja a szabványos kimenet), amely lefut futunk

után összetételének változása a projekt fájlt, vagy add meg (nem szisztémás) .h fájlok bármilyen .cpp

Amikor hívjuk

argumentum nélkül, a Makefile kezdődik az első jel (a másik, ha nem múlik rajta, már nem lesz látható). Itt az összes: látszólag felesleges (lehet azonnal megkezdi a fájl programm :), de néha azt szeretné, hogy egy hívást, hogy össze több modult, és akkor egyszerűen szerepel a változó progs.

Itt viszont a main.cpp F. H. viszont SubClass.cpp f.h és data.h. és SuperClass.cpp nem tartalmaznak semmit.

Legyen alapértelmezett épít függően .o a .cpp (vagy .c), és okoz g ++ a helyettesítési változó értékek CXXFLAGS (és használ GCC CFLAGS).

Keys a linker (call $ (CC) -o). Inkább felírni kifejezetten vagy egy csapat, vagy a make változókat, amit helyettesíteni kap. Ez lehet menteni egy csomó időt, amikor hibakeresés egy vagy két év (különösen, ha termelt nagyon hosszú „lap” hívás esetén a make).

Ha az egyedi intézkedésekre van szükség összeállításához minden fájlt, akkor írja kézzel. Például szeretnénk (talán néha) használja összeállításakor SubClass.cpp fájl előfeldolgozó változó TEST. Akkor írj

valahol minden, és függ. Ebben az esetben meg kell, hogy tartalmazza a parancs futásának érvek CXXFLAGS változó kifejezetten. Írtam itt is függ a Makefile. hogy ha szerkeszteni -DTEST tartott recompilation SubClass.o továbbra újjáépítése programm.

Most, a Makefile, fordítsd eltávolítás -DTEST SubClass.cpp

Kapcsolódó cikkek