Pagrindinis > Programavimas > makefile pavyzdys

makefile pavyzdys

Jeigu programuojate su C/C++, turbūt dažnai tenka nurodyti daugybę C++ failų g++ programai (kažkas tokio: g++ failas.cpp kitas_failas.cpp desimtas_failas.cpp ir t.t.). Nepatogu.

Problemą padės išspręsti makefile failiukas, kuris įvedus make tvarkingai sukompiliuos programą.

CC=g++
CFLAGS=-c -Wall
LDFLAGS=
SOURCES=failas.cpp kitas_failas.cpp dar_vienas_failas.cpp paskutinis_failas.cpp
OBJECTS=$(SOURCES:.cpp=.o)
EXECUTABLE=programos_pavadinimas

all: $(SOURCES) $(EXECUTABLE)

$(EXECUTABLE): $(OBJECTS)
$(CC) $(LDFLAGS) $(OBJECTS) -o $@

.cpp.o:
$(CC) $(CFLAGS) $< -o $@

clean:
rm -rf *o
programos_pavadinimas

SOURCES eilutėje, atskirdami tarpu, išvadinkite savo kompiliuojamus failus, EXECUTABLE eilutėje įrašykite sukompiliuotos programos vardą (komanda: g++ -o programos_vardas). Kai norėsite išvalyti katalogą nuo objektinių failų, įveskite make clean

Visas smagumas atrodo maždaug taip:

$ cd a048/

$ make
g++ -c -Wall a048.cpp -o a048.o
g++ -c -Wall sorting.cpp -o sorting.o
g++ -c -Wall actions.cpp -o actions.o
g++ -c -Wall filesystem.cpp -o filesystem.o
g++  a048.o sorting.o actions.o filesystem.o -o a048

$ ./a048 

$ make clean 

  1. Neddy
    Liepa 27th, 2008 į 16:29 | #1

    Galejai ir labiau sulietuvinti(daugiau paaiskinimu, papildomu galimybiu)
    http://mrbook.org/tutorials/make/

  2. Ernestas Kardzys
    Liepa 27th, 2008 į 17:07 | #2

    Tai aš ir neverčiau – palikau anglišką :)

  3. Neddy
    Liepa 28th, 2008 į 00:38 | #3

    Nezinau, kiek geros tavo zinios sioje srityje, bet su makefilais pastarosiomis dienomis susiduriu pirma karta rimteliau, todel butu labai idomu ka nors rasti ir lietuvishkai. Deja, visagalis googlas geriausia ka rado, tai tavo puslapiuka. Jei tikrai gerai juose gaudaisi, galetum ka nors parasyti? Nes linux’sistu gretos tikrai dideja ir manau kas nors panashaus kaip “Makefailu pradziamokslis zaliems” butu naudingas ir tikrai turetu savo auditorija. Jei tureciau kompetencijos meikuose, pasiulyciau bendradarbiauti, bet kol kas tik beginner levelyje esu ir kremtu eng manualus bei pavyzdukus.

  4. Ernestas Kardzys
    Liepa 28th, 2008 į 08:59 | #4

    Pasižiūrėsiu. Nebent savaitgalį – darbo dienomis man sunkiai sekas. Labai tingis vakare dar prie kompo sėsti po 8h kompiuterinės darbo dienos :D
    Kaip sakoma, nieko nežadu :)

  1. Citatų nėra.