Hogyan működik a make és mi az, avr, programozás

Makefile - tartalmazó fájlt egy sor utasítást tenni. A make program a fájl lehetővé teszi, hogy automatizálják a folyamatot A program fordítása és különböző tevékenységek egyidejűleg. Ha az alapértelmezett kezdeni, hogy Makefile az aktuális mappában és feldolgozza azt (meg lehet változtatni ezt a viselkedést, hogy nyissa meg a fájlt egy sor utasítást, ha ezt a parancsot: make -f drugoe_imya_makefile).

Márka rendszer született a UNIX világában, és fokozatosan kúszott a Windows mellett portok GNU-fordító (gcc). Ha megnyitja a példában a Makefile kész, akkor először tűnnek teljes zagyvaság, mert a fájl tartalmát ki van téve egy előre meghatározott szabályok, amelyek először is meg kell vizsgálni. Az egyszerűség kedvéért vegyük a munka példáját a projekt és az AVR gcc fordító.

Egy kicsit a fájl szerkezete.

Miután beállította a változó, akkor nézze meg a következők szerint:

$ @ Helyébe a jelenlegi cél.
$<которая заменяется на первую зависимость из списка.
$ ^ Helyébe egy listát az összes függőséget a könyvtárakat.

Tehát, ha dolgozik, a projekt kell, hogy automatizálják az ismétlődő lépéseket:

1. Fordítsd le a programot (a parancsok fog kinézni make hex).
2. Felvétel egy bináris fájlt (hogy flash).
3. A felvétel bitek „jumper” (hogy biztosíték, hogy az AVR mikrovezérlő általában 2 bájt).
4. Teljes mikrokontroller rekord (memória és hálók), a műveletek végrehajtása és a 2. és 3..
5. Tisztítás Project - az eltávolítása az összes köztes létrehozott fájlok fordítás során, általában a tárgy (make clean).
6. Erase mikrokontroller (tisztítás vaku és állítsa vissza a jumper az eredeti állapotába).
7. Backup Project (készítsen biztonsági) kerül megvalósításra 5. célkitűzés (tiszta), majd a biztonsági mentés.
8. Következtetés nyomokat a lehetséges opciókat dolgozni a projekt (csak hogy, ugyanakkor megjeleníti egy csipetnyi make hex, hogy flash, hogy biztosíték, hogy tiszta).

Minden ilyen intézkedés 1..8 Makefile előírt használati blokk, ez a blokk azonosított cél (target). A target neve lényegében egy címkét, amely ellenőrizni halad feldolgozása közben a parancsot, át a make programot. Az akció 1 ez egy fordító run (target hex), 2 - call programozó (cél vaku), stb Vegyük például a feldolgozó iparhoz cél hex (csapat, hogy hex) lépésekben - .. Lásd működő Makefile [4] például. projektet a V-USB könyvtárban.

[Problémák és megoldások]

A probléma megoldódott hozzáadásával, hogy a felső sorban Makefile „SHELL = cmd.exe”. Itt egy példa a dolgozó Makefile, amelyben ez a probléma megoldódott-e:

2. Hálózat (UNC) elérési útját kell idézőjelek közé, mert ha nem lesz megfelelő át a tolmács cmd.exe. Íme:

3. Debug makefile kényelmes az echo parancs kimenete a konzol változó értékeket. például:

[Hogyan hozzunk létre egy egyszerű makefile]

Tegyük fel, hogy van három fájlt: program.c, program.h és header.h. Meg kell őket gcc. Mivel ez legkönnyebben kivitelezhető?

Nyilvánvaló, hogy meg kell teremteni egy batch fájlt a make, és add, hogy a segédprogramot. Itt egy egyszerű megoldás, amely bemutatja az átfogó koncepció:

Megjegyezzük, hogy ahelyett, terek elején nek kell lennie tabok, vagy make nem fog működni. Meg kell rögzíteni, ha másolja a szöveget, mint a sablon az új makefile.

Ez a legegyszerűbb minta, és a hiánya is, hogy ha szükség van, hogy támogassa a nagyszámú kódfájlokhoz minden fájlt meg kell adni az új szabályt. Ez a hátrány kiküszöbölhető az alábbiak szerint:

Ezek csak példák, és itt eltekintünk az egyszerűség kedvéért makrók, például a $ (CC), $ (CFLAGS) és mások. Íme egy példa egy egyszerű makefile, amit gyakran lefordítani a forráskód C.

Ez a Makefile használja a wildcard funkció és patsubst teszik segédprogram automatikusan csatlakozzon fájlok * .c és * .h az aktuális könyvtárban. Ez azt jelenti, hogy ha egy új forráskód modulok gyökérkönyvtárába a projekt, akkor már nem kell módosítani a tartalmát a make. Ha meg akarja változtatni a nevét, a generált futtatható fájl, akkor csak meg kell változtatni az értékét TARGET. Tisztítsa meg a projekt szükséges a projekt gyökérkönyvtárában, írja be a parancsot, hogy tiszta, és össze kell állítani, hogy minden, vagy csak tenni.

Mindenesetre, IMHO, ne használja Autoconf / Automake. Persze, hogy jól működik, de ha megszokja őket, akkor nem a legegyszerűbb dolog, és nehéz lesz megérteni a tartalmát a make készen, hogy jön a legtöbb nyílt forráskódú projekt.

addprefix. addprefix funkció lehetővé teszi, hogy adjunk egy prefix minden sor a sorozat a sorok. például:

gccmakedep segédprogramot. Attól függően, hogy a címek száma és a projekt modulok és az Ön igényeinek a design, úgy gccmakedep segédprogram használatát. [7] Ez a program megvizsgálja az aktuális könyvtárban, és hozzáfűzi makefile függően a fejléc minden file * .c / *. CPP. Természetesen, ha van egy projekt, csak 2 vagy 3 kép, akkor ez a funkció nem szükséges, de ha a modulok és még sok más címek, a gccmakedep segédprogram jöhet.

1. telepítése MSYS site: mingw.org.
2. Otthon a MinGW és MSYS projektek site: mingw.org.
3. Translation Makefile Mini HOGYAN (záró) site: opennet.ru.
4. Work példa Makefile AVR-USB (USB HID-console segédprogram készülék és dolgozni vele).
5. GNU Make egy összeállítás a site menedzsment program: linux.yaroslavl.ru (make program irányítási oroszul).
6. A hatékony használatához GNU Make site: linux.org.ru.
7. gccmakedep site: x.org.