4 175
muokkausta
p (linkki) |
(esimerkki) |
||
Rivi 42: | Rivi 42: | ||
$(CC) -c hello.c -o hello.o | $(CC) -c hello.c -o hello.o | ||
Nyt kääntäjän vaihtaminen toiseksi onnistuu pelkkää muuttujaa muuttamalla, mistä on hyötyä Makefilen kasvaessa suuremmaksi. Vastaavalla tavalla muuttujina käytetään usein esimerkiksi käännösoptioita, jolloin kaikkiin tiedostoihin saadaan haluttaessa joko debug-käännösoptiot (-g, -O0) tai julkaisua varten tehokkaat optimoinnit (-O3). | Nyt kääntäjän vaihtaminen toiseksi onnistuu pelkkää muuttujaa muuttamalla, mistä on hyötyä Makefilen kasvaessa suuremmaksi. Vastaavalla tavalla muuttujina käytetään usein esimerkiksi käännösoptioita, jolloin kaikkiin tiedostoihin saadaan haluttaessa joko debug-käännösoptiot (-g, -O0) tai julkaisua varten tehokkaat optimoinnit (-O3). | ||
== Esimerkki == | |||
Esimerkki Makefilestä, jota käytetään kääntämään kahdesta [[C plus plus | C++]]-kielisestä lähdekooditiedostosta (<tt>src/main.cpp</tt> ja <tt>src/funktiot.cpp</tt>). | |||
#Objektitiedostot | |||
PROJEKTI = src/main.o src/funktiot.o | |||
#Käännösasetukset | |||
LDFLAGS_CLIENT = -lm | |||
CXXFLAGS = -g | |||
#Oletuksena suoritetaan osio "softa" | |||
all: softa | |||
#Tiedot, mistä lähdekooditiedostoista objektitiedostot käännetään | |||
src/main.o: src/main.cpp | |||
src/funktiot.o: src/funktiot.cpp | |||
#Kääntö | |||
softa: | |||
g++ $(PROJEKTI) $(CXXFLAGS) $(LDFLAGS) -o ohjelma | |||
#Clean, joka poistaa tarpeettomat objektitiedostot | |||
clean: | |||
rm -f $(PROJEKTI) | |||
Nyt projektin hakemistossa voidaan ajaa komento make, jolloin [[make]] kääntää projektin: | |||
$make | |||
g++ -g -c -o src/main.o src/main.cpp | |||
g++ -g -c -o src/funktiot.o src/funktiot.cpp | |||
g++ src/main.o src/funktiot.o -g -o ohjelma | |||
Huomaa, että jos nyt muokkaamme tiedostoa src/funktiot.cpp ja ajamme maken uudelleen, tiedostoa src/main.cpp ei käännetä uudestaan: | |||
$make | |||
g++ -g -c -o src/main.o src/main.cpp | |||
g++ src/main.o src/funktiot.o -g -o ohjelma | |||
== Katso myös == | == Katso myös == |