Jam

Miután rájöttem, hogy nem fogok dűlőre jutni az Eclipse "Managed Make C++ Project" c. dolgaival (értsd: nem bírtam beállítani, hogy [Source_TOP]/bin -be rakosgassa a futtathatókat, más megoldás után néztem! És megpillantottam a "Standard Make C++ Project" lehetőséget. Csak igen ám!, de itt nekem kéne a makefile-t is megírnom. Amihez sajnos lövésem sincs; mert mindig az IDE intézte helyettem a "piszkos munkát", de nem baj gondoltam; majd én megtanulom a make használatát...
Aztán ahogy nézegettem a szintaxist és kezdett nagyon legörbülni a szám, hirtelen eszembe jutott, hogy amikor - egyik éjjel - a haiku svn-t böngésztem a berlioson, nem voltak makefileok.
Gyorsan utána is néztem, hogy ők mivel csinálják. Így van! - jól emlékeztem, meg a címből ki lehetett találni :) - jam-mel.
Így végül eljutottam ide .
A jam szintaxisa kicsit könnyebb..., legalábbis, ahogy nézem.
Aztán látva, hogy 2003 óta nem fejlesztik, elszomorodtam, de végül ráakadtam az ftJam-re.
Le is szedtem gyorsan:

sudo apt-get install ftjam

És meg is írtam életem első jamfájlját:

Echo hello ;

haha!

Aztán találtam egy összehasonlítást itt. De hiába a KJam a leggyorsabb, mégis maradok inkább a ftJamnél, mert az stabil; míg a KJam csak beta, és a szintax meg amúgy is azonos, így ha váltani akarnék nem lenne gond.
Ha majd nagyon penge leszek benne, akkor lehet, hogy írok egy kis how to-t a hupwikire.

Hozzászólások

Make ügyben nézd meg a CMake-et, én is hasonló helyzetben voltam, és ott kötöttem ki :)

Andi, really. Take it from me. If I tell you something, I'm usually right.

A makefile szintaxisa nem igazan nehez, szerintem rossz peldat neztel.

1) a cpp/cxx kiterjesztest eleve ismeri a GNU Make, van is hozza beepitett rule
2) Ugyanez a c fajlokra
3) ennekokan csak nehany valtozot kell beallitani.


# Makefile example

CC = gcc
CXX = g++
CFLAGS = -O2 -W -Wall -g -ggdb -I. -I/usr/include/glib-2.0
LDFLAGS = -lglib-2.0
OBJS = db.o util.o main.o

all: teszt

clean:
        -rm -f *.o teszt

teszt: $(OBJS)
        $(CC) -o bin/teszt $(LDFLAGS) $<

Egy kisse bonyibb pelda:


CC = gcc
# CXX = g++
CFLAGS = -O2 -g -ggdb -pipe -W -Wall
INCLUDES = -I. -I/usr/include/glibc-2.0
LDFLAGS  = -g -ggdb 
LIBS = -lglib-2.0

OBJS = db.o util.o main.o

all: teszt

clean:
        -rm -f *.o

teszt: $(OBJS)
       $(CC) -o bin/teszt $(LDFLAGS) $(LIBS) $<

%.o: %.c
       $(CC) -c -o $@ $(CFLAGS) $(INCLUDES) $<

--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant.