Ero sivun ”Makefile” versioiden välillä

Siirry navigaatioon Siirry hakuun
1 310 merkkiä lisätty ,  14. helmikuuta 2011
→‎Esimerkki: pitäis olla näin
(alkua)
 
(→‎Esimerkki: pitäis olla näin)
 
(8 välissä olevaa versiota 5 käyttäjän tekeminä ei näytetä)
Rivi 1: Rivi 1:
Makefile on tiedosto, jonka perusteella [[make]] kääntää ohjelman lähdekoodin. Makefilet ovat käteviä etenkin ohjelmoijille, jotka voivat niiden avulla automatisoida ohjelman käännösprosessin.
Makefile on tiedosto, jonka perusteella [[make]] [[kääntäminen|kääntää]] ohjelman [[lähdekoodi]]n. Makefilet ovat käteviä etenkin ohjelmoijille, jotka voivat niiden avulla automatisoida ohjelman käännösprosessin.


== Tiedoston rakenne ==
== Tiedoston rakenne ==
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 = -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/main.cpp ja ajamme maken uudelleen, tiedostoa src/funktiot.cpp ei käännetä uudestaan:
$[[touch]] src/main.cpp
$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 ==
*[[Make]]
*[[Make]]
*[[Cmake]]
*[[autotools]]
==Aiheesta muualla==
*[http://www.flug.fi/ohjeita/linux-ohjelmointi.html#Makefile FLUG:in Linux-ohjelmointi]-opas.


[[Luokka:Ohjelmistokehitys]]
[[Luokka:Kehitystyökalut]]
Rekisteröitymätön käyttäjä

Navigointivalikko