facebook LinkedIn
Google Book Search
Прегледи

Автоматизирано компилиране. make и Makefile

от Курс за ССОК

Съдържание

Въведение

В миналото традиционният начин за създаване на изпълним файл е бил следния:

  1. писане на програмата и транслиране на изх. код до обектен код
  2. свързване на обектния код с библиотеки до машинен код

Писането и създаването на крайното приложение било трудоемка задача и затова били създадени помощни инструменти, улесняващи процеса на разработка. Най-известният от тях е make. Дори в някои съвременни среди за разработка се използва make, въпреки че работата му и контролните файлове са скрити от програмиста.

Make и асоциираните с него файлове с име Makefile са се наложили като стандарт в софтуера с отворен код. Например, за компилирането и инсталирането на дадена програма са достатъчни стъпките:

$ make all
# make install
$ make clean

В изложението ще използваме термина компилиране, но Makefile може да се използва за автоматизиране и на други операции, свързани с проекта.

Структура на Makefile

Makefile се състой от една или няколко секции в следния формат:

# Коментарите започват със знака диез
цел: зависимости
	команда 1
	команда 2
          .
          .
          .
	команда n

Цел

Име на целта. Това е параметъра, който се подава при извикването на make. Например: make build.

Зависимости

Списък с файлове или други цели, разделени с интервал. Файловете трябва да са налични, а другите цели изпълнени. Използва се от make, за да ускори компилирането, като пропуска компилирането на файлове, който не са се променили. Може да се използва за задаване на последователност на изпълнение на секциите от Makefile.

Команди

Една или няколко команди, необходими за постигане на желания резултат. Това са операциите, които обикновено се извършват ръчно от човека. Задължително е преди всяка команда да има табулация.

Пример:

build: hello.c
        gcc -o hello hello.c

install:
        @echo "Installing hello.c"

clean:
        rm -f hello hello.o

По-сложен пример за Makefile от реален проект може да бъде изтеглен чрез:
svn checkout https://svn.openfmi.net/olpc

ГНУ make

Вариантът на make разработен от ГНУ е може би най-използваният в света. Разликите между реализацията и стандарта (IEEE Standard 1003.2-1992) и/или други реализации са дадени на:
http://www.gnu.org/software/make/manual/make.html#Missing

Други инструменти за автоматизиране на компилирането

Съществуват и други инструменти за автоматизиране, като някои от тях се използват от определена група проекти или са направени, за да заместят make. Списък е наличен на:
http://en.wikipedia.org/wiki/List_of_build_automation_software

Въпреки разликите в инструментите за автоматизация, принципите залегнали в тях са близки и научаването им не е много трудно. Използването и познаването им е практическа необходимост дори при сравнително малки проекти.

Връзки

Локални линукс групи RSS
Дискусии