Как работи Makefile и какво е то, AVR, програмиране

Makefile - файл, съдържащ набор от инструкции, за да направи. Програмата за грим с този файл дава възможност за автоматизиране на процеса на съставянето на програмата, и да извършват различни действия в същото време. Когато започнете да търсите по подразбиране направи Makefile в текущата папка и да го обработва (можете да промените това поведение за отваряне на файл с набор от инструкции, ако въведете командата направи -f drugoe_imya_makefile).







направи система е роден в света на UNIX, и постепенно се промъкна на Windows заедно с пристанищата GNU-компилатор (ССЗ). Ако отворите примера на Makefile готов, тя може да изглежда на пръв пълна безсмислица, защото съдържанието на файла е обект на предварително определен набор от правила, които първо трябва да бъдат проучени. За простота, помислете примера на работата по проекта и AVR компилатор GCC.

Още малко за структурата на файла.

След установяване на променливата, можете да се обърнете към него, както следва:

$ @ Се заменя с настоящата цел.
$<которая заменяется на первую зависимость из списка.
$ ^ Се заменя със списък на всички зависимости с техните директории.

Така че, когато се работи с проекта може да се наложи да се автоматизира тези повтарящи се стъпки:

1. Съставете програма (командите ще изглеждат грим шестнадесетичен).
2. Запишете двоичен файл (уверете се, флаш).
3. Отчитане на бита "мостчета" (уверете се, предпазител, за AVR микроконтролер обикновено е 2 байта).
4. Пълен микроконтролер запис (памет и платна), операциите се извършват и 2 и 3.
5. Проект за почистване - премахването на всички междинни файлове, генерирани по време на компилация, обикновено обекта (чистите).
6. Erase микроконтролер (почистване флаш и нулиране на скок в първоначалното му състояние).
7. Backup на проекта (да направи резервно копие), ще се реализира Цел 5 (чиста), а след това архивния файл.
8. Заключение улики за възможните опции за работа с проекта (уверете, като в същото време показва намек за грим шестнадесетичен, направи светкавица, направи предпазител, направи чиста).

За всяко такова действие да 1..8 Makefile предписано инструкция блок, този блок е идентифициран цел (цел). име на целта по същество е етикет, на който се контролира пропуски при обработката на командата, преминали програмата за грим. За действие 1 това е компилация (целева шестнадесетичен), 2 - разговор програмист (целева флаш) и т.н. Помислете например за преработващите отрасли мишена шестнадесетичен (екип направи шестнадесетичен) на стъпки - .. Виж операционна Makefile [4], например. проект от V-USB библиотеката.






[Проблеми и решения]

Проблемът се решава чрез добавяне към горния ред Makefile "SHELL = cmd.exe". Ето един пример за работа Makefile, в които този проблем е отстранен:

2. Мрежа (UNC) път трябва да бъде затворен в двойни кавички, в противен случай те ще бъдат правилно прехвърлен в cmd.exe на преводач. Ето как:

3. Debug Makefile комфортно с ехо команда, изход в стойностите на конзолата променлива. например:

[Как да се създаде проста Makefile]

Да предположим, че има три файла: program.c, program.h и header.h. Те трябва да се съставя с ССЗ. Тъй като това е най-лесният за изпълнение?

Очевидно е, че необходимостта от създаване на партиди на Makefile, и да го премине, за да полезност. Ето едно просто решение, което показва цялостната концепция:

Имайте предвид, че вместо интервали в началото на линиите трябва да разделите или Makefile няма да работи. Това трябва да се поправи, когато копирате текст като шаблон на новия Makefile.

Това е най-простият модел, както и липсата на това е, че ако трябва да се поддържа голям брой файлове с код за всеки файл трябва да добавите ново правило. Този недостатък може да бъде отстранена, както следва:

Това са само примери, и са пропуснати тук за простота макроси като $ (CC), $ (CFLAGS) и други. Ето един пример на проста Makefile, които често се използват за съставяне на изходния код в C.

Това Makefile използва функцията маска и patsubst направи програма, за да се свързва автоматично файлове * .c и * .h в текущата директория. Това означава, че при добавяне на нов източник модули с код в главната директория на проекта, вече няма да се наложи да промените съдържанието на Makefile. Ако искате да промените името на генерирания изпълним файл, просто трябва да промените стойността на TARGET. За почистване на проекта е необходимо в основната директория на проекта, въведете командата направи чиста, и да състави направи всичко или просто да се направи.

Във всеки случай, IMHO, не използвайте Autoconf / Automake. Разбира се, те работят добре, но ако се свикне с тях, не можеш да направиш най-простите неща, и ще бъде трудно да се разбере съдържанието на Makefile готов, които идват заедно с повечето проекти с отворен код.

addprefix. addprefix функция ви позволява да добавите код за всяка линия в последователността на реда. например:

gccmakedep полезност. В зависимост от броя на заглавията и модули по проекта, както и на вашите нужди в проектирането, помислете gccmakedep използване програма [7]. Тази програма изследва текущата директория, и добавя Makefile в зависимост от заглавната част за всеки файл * .c / *. Cpp. Разбира се, ако имате проект, само на 2 или 3 на файлове, а след това тази функция е необходимо, но ако модулите и още много други заглавия, ползата gccmakedep може да дойде по-удобно.

1. Инсталиране MSYS сайт: mingw.org.
2. Начало на сайта на MinGW и MSYS Проекти: mingw.org.
3. Превод Makefile Mini HOWTO (направят) сайт: opennet.ru.
4. Работа в Пример Makefile AVR-USB (USB HID-конзола полезност устройство и да се работи с него).
5. Направете GNU компилация от програмата за управление на сайт: linux.yaroslavl.ru (управление на грим програма на руски).
6. Ефективно използване GNU Направете сайт: linux.org.ru.
7. gccmakedep сайт: x.org.