Cum Makefile și ceea ce este, avr, programarea

Makefile - fișier care conține un set de instrucțiuni pentru a face. Programul face cu acest fișier vă permite să automatizeze procesul de elaborare a programului, și de a efectua diferite acțiuni în același timp. Atunci când implicit începe căutarea face Makefile în dosarul curent și procesează (puteți schimba acest comportament pentru a deschide un fișier cu un set de instrucțiuni, dacă introduceți comanda face drugoe_imya_makefile -f).







face sistemul sa născut în lumea UNIX, și sa strecurat treptat pe Windows, împreună cu porturi GNU-compilator (GCC). Dacă deschideți exemplul Makefile gata, poate părea la prima completă fără sens, deoarece conținutul fișierului este supus unui set prestabilit de reguli, care trebuie să fie mai întâi explorate. Pentru simplificare, ia în considerare exemplul lucrărilor cu proiectul și AVR compilator GCC.

Un pic despre structura fișierului.

După setarea variabilei, puteți face referire la acesta, după cum urmează:

$ @ Se înlocuiește cu obiectivul actual.
$<которая заменяется на первую зависимость из списка.
$ ^ Se înlocuiește cu o listă cu toate dependențele cu directoarele lor.

Deci, atunci când se lucrează cu proiectul ar putea avea nevoie pentru a automatiza aceste etape repetitive:

1. Compilarea programul (comenzile vor arata ca make hex).
2. Înregistrarea unui fișier binar (a face flash).
3. Înregistrarea de biți „Jumpers“ (a face siguranță, pentru AVR microcontroler este de obicei 2 octeți).
4. înregistra microcontroler complet (memorie și straturi subțiri), operațiile sunt efectuate și 2 și 3.
5. Proiect de curățare - eliminarea tuturor fișierelor intermediare generate în timpul compilării, de obicei, obiectul (face curat).
6. Erase microcontroler (curățare bliț și reseta jumper-ul la starea sa inițială).
7. Proiect de backup (face copie de rezervă), va fi pus în aplicare Obiectivul 5 (curat), și apoi fișierul copie de rezervă.
8. Concluzie indicii cu privire la opțiunile posibile pentru a lucra cu proiectul (doar a face, în același timp, afișează un indiciu al face hex, face flash, face siguranță, face curat).

Pentru fiecare astfel de acțiune la 1..8 Makefile bloc de instrucțiuni prescris, acest bloc este identificat obiectiv (țintă). Numele țintă este în esență o etichetă pe care controlul trece la procesarea comenzii, a trecut la programul face. Pentru acțiunea 1 este un compilator rula (țintă hex), 2 - apel programator (bliț țintă), etc. De exemplu, ia în considerare procesarea ramură țintă hex (echipa de a face hex) în pași - .. A se vedea de operare Makefile [4], de exemplu. proiect din biblioteca V-USB.






[Probleme și soluții]

Problema este rezolvată prin adăugarea la Makefile rândul de sus „SHELL = cmd.exe“. Aici este un exemplu de Makefile, în care această problemă a fost rezolvată de lucru:

2. Rețea (UNC) calea trebuie să fie închise în ghilimele, în caz contrar ele vor fi transferate în mod corespunzător la cmd.exe interpret. Iată cum:

3. Makefile Debug confortabil cu comanda echo, de ieșire în valorile variabile consola. exemplu:

[Cum de a crea un Makefile simplu]

Să presupunem că există trei fișiere: program.c, program.h și header.h. Ei au nevoie să fie compilate cu GCC. Deoarece este mai ușor să pună în aplicare?

Evident, necesitatea de a crea un fișier batch Makefile, și trece-l pentru a face utilitate. Iată o soluție simplă, care arată conceptul de ansamblu:

Rețineți că, în loc de spații la începutul liniilor trebuie să fie file, sau Makefile nu va funcționa. Acesta trebuie să fie stabilită, atunci când copiați textul ca șablon al noului Makefile.

Acesta este cel mai simplu model, iar lipsa acesteia este că, dacă trebuie să susțină un număr mare de fișiere de cod pentru fiecare fișier trebuie să adăugați o regulă nouă. Acest dezavantaj poate fi eliminat după cum urmează:

Acestea sunt doar exemple, și sunt omise aici pentru macro-uri, cum ar fi simplitatea $ (CC), $ (CFLAGS) și altele. Aici este un exemplu de un Makefile simplu, pe care le folosesc adesea pentru a compila codul sursă în C.

Acest Makefile utilizează funcția wildcard și patsubst face utilitate pentru a se conecta în mod automat fișierele * .c și * .h în directorul curent. Acest lucru înseamnă că, atunci când adăugați o nouă module de cod sursă în directorul rădăcină al proiectului, nu va mai trebui să modifice conținutul Makefile. Dacă doriți să modificați numele fișierului executabil generat, trebuie doar să modificați valoarea TARGET. Pentru a curăța proiectul necesare în directorul rădăcină al proiectului, introduceți comanda face curat, și pentru a compila face toate sau doar a face.

În orice caz, IMHO, nu utilizați Autoconf / Automake. Desigur, ele funcționează bine, dar dacă te obișnuiești cu ele, nu poți face cele mai simple lucruri, și vă va fi greu de înțeles conținutul Makefile gata, care vin împreună cu cele mai multe proiecte open-source.

addprefix. caracteristică addprefix vă permite să adăugați un prefix la fiecare linie în secvența de rânduri. exemplu:

utilitate gccmakedep. În funcție de numărul de titluri și module de proiect și nevoile în proiectarea, ia în considerare utilizarea de utilitate gccmakedep [7]. Acest program analizează directorul curent, și în funcție de Makefile atașează antetul pentru fiecare fișier * .c / *. Cpp. Desigur, dacă aveți un proiect, doar 2 sau 3 fișiere, atunci această funcționalitate este inutilă, dar în cazul modulelor și mult mai multe titluri, utilitarul gccmakedep poate veni la îndemână.

1. Instalarea site-ului MSYS: mingw.org.
2. Pagina principală a site-ului MinGW și MSYS Proiecte: mingw.org.
3. Traducerea Makefile Mini HOWTO (a face) site-ul: opennet.ru.
4. Lucrul în exemplul Makefile AVR-USB (USB-HID consola dispozitiv de utilitate și de a lucra cu ea).
5. GNU face o compilare a programului de gestionare a site-ului: linux.yaroslavl.ru (managementul programului face în limba rusă).
6. Utilizarea eficientă GNU Asigurați-site-ul: linux.org.ru.
site-ul 7. gccmakedep: x.org.