Muokataan sivua Makefile

Siirry navigaatioon Siirry hakuun
Varoitus: Et ole kirjautunut sisään. IP-osoitteesi näkyy julkisesti kaikille, jos muokkaat. Jos kirjaudut sisään tai luot tunnuksen, muokkauksesi yhdistetään käyttäjänimeesi ja saat paremman käyttökokemuksen.

Kumoaminen voidaan suorittaa. Varmista alla olevasta vertailusta, että haluat saada aikaan tämän lopputuloksen, ja sen jälkeen julkaise alla näkyvät muutokset.

Nykyinen versio Oma tekstisi
Rivi 1: Rivi 1:
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.
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.


== 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:Kehitystyökalut]]
[[Luokka:Ohjelmistokehitys]]
Wikin materiaali on kaikkien vapaasti käytettävissä Creative Commons 3.0 - nimi mainittava -lisenssin alaisuudessa. TEKIJÄNOIKEUDEN ALAISEN MATERIAALIN KÄYTTÄMINEN ILMAN LUPAA ON EHDOTTOMASTI KIELLETTYÄ!

Muokataksesi tätä sivua vastaa alla olevaan kysymykseen (lisätietoja):

Peruuta Muokkausohjeet (avautuu uuteen ikkunaan)
Noudettu kohteesta ”https://www.linux.fi/wiki/Makefile