Share to: share facebook share twitter share wa share telegram print page

Make

Disambiguazione – Se stai cercando altri significati, vedi Make (disambigua).
make
software
Schermata di esempio
Schermata di esempio
GenereAutomazione dello sviluppo
SviluppatoreStuart Feldman
Data prima versioneaprile 1976
Sistema operativoUnix-like
LinguaggioC
LicenzaGNU General Public License
(licenza libera)
LinguaInglese

Il make è un'utility, sviluppata sui sistemi operativi della famiglia UNIX, ma disponibile su un'ampia gamma di sistemi, che automatizza il processo di creazione di file che dipendono da altri file, risolvendo le dipendenze e invocando programmi esterni per il lavoro necessario.

Tale gestione delle dipendenze è molto semplice, e si basa sulla data e ora di ultima modifica dei file interessati.

L'utility è usata soprattutto per la compilazione di codice sorgente in codice oggetto, unendo e poi linkando il codice oggetto in programmi eseguibili o in librerie. Esso usa file chiamati makefile per determinare il grado delle dipendenze per un particolare output, e gli script necessari per la compilazione da passare alla shell. Il termine makefile deriva dal nome dato tipicamente al file di input di make.

Origine

Ora ci sono delle utilities per la verifica delle dipendenze, ma 'make' è effettivamente l'utility più utilizzata, principalmente per la sua inclusione dei sistemi operativi Unix. È stato creato da Stuart Feldman nel 1977 nei laboratori Bell (Bell Labs). Nel 2003, il Dr. Feldman ha ricevuto il premio: ACM, per l'invenzione di questo importante tool. Prima dell'invenzione di make il sistema di build di UNIX consisteva semplicemente in "make" e "install", che erano dei semplici shellscript, insieme al codice sorgente di un programma. Poter mischiare i comandi / istruzioni per diversi target in un singolo file e poter astrarre la verifica e il tracking delle dipendenze, è stato un importante passo avanti per i più avanzati ambienti di building.

Versioni moderne

Make è stato riscritto più volte e in alcuni casi sono state scritte delle varianti da zero, che utilizzano lo stesso format dei file e lo stesso algoritmo base. Tre versioni riscritte di make più comuni e tradizionali sono:

  • BSD make, che è derivato dal lavoro di Adam de Boor, su una versione di make capace di costruire target in parallelo, e funziona con varie modifiche in FreeBSD, NetBSD e OpenBSD.
  • GNU make, che è parte di (quasi) tutte le distribuzioni GNU/Linux è usato insieme al GNU build system . Una delle differenze principali con BSD make, è che quest'ultimo ha un set predefinito di macro, GNU make di solito usa un set esterno di macro come M4.
  • NMAKE, il buildtool fornito con Visual C++.

POSIX include la standardizzazione delle feature basilari e operazioni di make, grazie a questo è possibile usare semplici Makefiles in più varianti di make, alcune versioni di GNU e BSD make, cercheranno rispettivamente prima i file GNUmakefile e BSDmakefile.

Utilizzo e critiche

Make ha la sua porzione di fan e non. Sono emersi molti problemi quando si è tentato di usare make con moderni o grandi progetti, ma molte persone hanno comunque sottolineato che make funziona effettivamente molto bene, è semplice da utilizzare e molto potente. È utilizzato per compilare e gestire (quasi) ogni sistema operativo, e molti sostituti moderni sono molto simili al funzionamento del "vero" make. Allo stesso modo, molti linguaggi di programmazione moderni, hanno dei loro modi specifici di rilevare le dipendenze.

Con l'avvento degli Ambienti di Sviluppo Integrati (IDE), specialmente sulle piattaforme non-UNIX, molti programmatori non fanno manualmente il tracking e la gestione delle dipendenze, o anche la lista dei file che fanno parte del progetto, lasciano fare queste cose al loro ambiente di sviluppo automatizzato.

Struttura di un makefile

Un makefile consiste in linee di testo che definiscono un file (o un gruppo di file) oppure il nome di una regola dipendente dal gruppo di file. I file generati sono contrassegnati come i loro file sorgenti, mentre i file sorgenti sono contrassegnati a seconda dei file inclusi internamente. Dopo che ogni dipendenza è dichiarata, può seguire una serie di linee indentate (da tabulazioni) che definiscono come trasformare i file di ingresso nei file d'uscita, se il primo è stato modificato più di recente rispetto al secondo. Nel caso in cui tali definizioni sono presenti, queste sono riferite a dei script di compilazione e sono passate alla shell per generare i file target.

La struttura base è:

# I commenti usano il cancelletto
target: dipendenze
	comando 1
	comando 2
	   .
	   .
	   .
	comando n

Un makefile può anche contenere definizioni di variabili e inclusioni di altri makefile. Le variabili nei makefile possono essere sovrascritte dagli argomenti passati all'utility make dalla riga di comando. Questo permette all'utente di specificare differenti comportamenti degli script di compilazione e come invocare i programmi oltre ad altre cose. Per esempio la variabile "CC" è frequentemente usata nei makefile per riferirsi al compilatore C e l'utente potrebbe fornire una alternativa al compilatore da usare.

Esempio di un makefile

Sotto è riportato un esempio di un makefile che compila un sorgente chiamato "helloworld.c" usando cc, un compilatore C. Il tag PHONY è un tecnicismo che dice al make che un particolare nome di target non produce un file. I simboli $@ e $< sono due di quelle che sono chiamate variabili automatiche e rappresentano il nome del target. Ci sono altre variabili automatiche.

Si noti che nel target "clean", un meno precede nel comando, dicendo al make di ignorare gli errori durante l'esecuzione del comando; make normalmente esce se l'esecuzione di un comando fallisce in qualsiasi punto. Nel caso del target di pulizia, chiamato tipicamente "clean", si vuole rimuovere ogni file generato nel processo di compilazione, senza uscire se i file da cancellare non esistono. Con l'aggiunta del tag PHONY al clean, si previene che make si aspetti un file dal target. In questo particolare caso, il prefisso meno nel comando è ridondante e in casi comuni, l'opzione -f o "force" aggiunta a rm previene che rm esca a causa della non esistenza di un file.

SHELL=/bin/sh #Shell da utilizzare per l'esecuzione dei comandi

CC=cc #Compilatore da utilizzare

OBJECTS=helloworld.o #File oggetto
SRCS=helloworld.c #File sorgente

#target "helloworld" richiede $(OBJECTS) per compilare
helloworld: $(OBJECTS)
        $(CC) -o $@ $<
 
#target "helloworld.o" richiede $(SRCS) per creare i file oggetto
helloworld.o: $(SRCS)
        $(CC) -c -o $@ $<

#target "clean" pulisce i file oggetto e il binario nella directory corrente 
clean:
        rm -f helloworld helloworld.o

#target "clean" non è un file!
.PHONY: clean

Tool simili

Make è sicuramente il tool più conosciuto per l'automazione del project-building, ma esistono anche altri tool, simili a make:

  • ant Tool molto popolare per gestire grandi progetti Java, incluso in Eclipse. Utilizza un file XML per la configurazione del progetto.
  • maven Tool simile a ant, utilizzato in Android Studio (e non, ovviamente)
  • Rake: Un build tool basato su Ruby

Bibliografia

Voci correlate

Altri progetti

Collegamenti esterni

Controllo di autoritàVIAF (EN176684165 · LCCN (ENn92090404 · GND (DE4334388-0 · J9U (ENHE987009950832805171
  Portale Software libero: accedi alle voci di Wikipedia che trattano di Software libero

Read other articles:

Pablo Zabaleta Pablo Zabaleta (2019)Informasi pribadiNama lengkap Pablo Javier Zabaleta Girod[1]Tanggal lahir 16 Januari 1985 (umur 39)Tempat lahir Buenos Aires, ArgentinaTinggi 1,76 m (5 ft 9+1⁄2 in)[2]Posisi bermain Bek Kanan/Kiri Gelandang BertahanKarier junior1995–1997 Obras Sanitarias1997–2002 San LorenzoKarier senior*Tahun Tim Tampil (Gol)2002–2005 San Lorenzo 66 (8)2005–2008 Espanyol 80 (3)2008–2017 Manchester City 148 (6)2017–2020 Wes…

Akiyo NoguchiNoguchi dalam Piala Dunia di Wina pada tahun 2010.Informasi pribadiKewarganegaraanJepangLahir30 Mei 1989 (umur 34)Ryūgasaki, Prefektur Ibaraki, Jepang[1]PekerjaanPanjat tebing profesionalTinggi167 cm (5 ft 6 in)Berat49 kg (108 pon)Situs webhttp://akiyonoguchi.com Karir panjatJenis panjatBouldering, Lead climbingHighest grade Redpoint: 8c+ (5.14c) Bouldering: 8A+ (V12) Known forMemenangkan Piala Dunia bouldering sebanyak 4 ka…

Caladi tikotok Status konservasi Risiko Rendah (IUCN 3.1)[1] Klasifikasi ilmiah Kerajaan: Animalia Filum: Chordata Kelas: Aves Ordo: Piciformes Famili: Picidae Genus: Hemicircus Spesies: H. concretus Nama binomial Hemicircus concretus(Temminck, 1821) Caladi tikotok adalah spesies burung dari famili Picidae. Burung ini merupakan hewan endemik pulau Jawa, Indonesia. Hemicircus concretus dan Hemicircus sordidus sebelumnya digabungkan sebagai H. concretus.[2] Referensi ^ He…

Cette page concerne l'année 2001 (MMI en chiffres romains) du calendrier grégorien. Pour les autres significations, voir 2001 (homonymie). Chronologies Attentats du 11 septembre 2001 à New York.Données clés 1998 1999 2000  2001  2002 2003 2004Décennies :1970 1980 1990  2000  2010 2020 2030Siècles :XIXe XXe  XXIe  XXIIe XXIIIe Chronologies thématiques Art Animation asiatique, Architecture, Arts plastiques (Dessin, Gravure, Lithographie, Peinture et …

Demi LovatoDemi Lovato tahun 2023LahirDemetria Devonne Lovato[1]20 Agustus 1992 (umur 31)Albuquerque, New Mexico, Amerika SerikatTempat tinggalLos Angeles, California, Amerika Serikat[2]Pekerjaan Penyanyi Penulis lagu Pemeran Penulis Tahun aktif2002–sekarang[3]Kota asalDallas, Texas, Amerika SerikatKarier musikGenre Pop Pop rock R&B Instrumen Vokal Gitar Piano Drum Label Island Hollywood Safehouse Situs webdemilovato.com Demetria Devonne Lovato (/lə…

Об экономическом термине см. Первородный грех (экономика). ХристианствоБиблия Ветхий Завет Новый Завет Евангелие Десять заповедей Нагорная проповедь Апокрифы Бог, Троица Бог Отец Иисус Христос Святой Дух История христианства Апостолы Хронология христианства Ранне…

Canadian politician Charles le Moyne, Second Baron de Longueuil Charles III Le Moyne (Longueuil, (18 October 1687 – 17 January 1755) was the second baron de Longueuil. He succeeded his father Charles le Moyne de Longueuil, Baron de Longueuil in 1729. He became Governor of Montreal, and administrator by interim of New France.[1] Biography Charles III Le Moyne was the son of Charles le Moyne de Longueuil, Baron de Longueuil, who was General Administrator for New France by interim. He…

Georgian politician and wrestler Leri Khabelov Medal record Men's freestyle wrestling Olympic Games Representing  Unified Team 1992 Barcelona 100 kg Representing  Soviet Union 1988 Seoul 100 kg World Championships Representing  Soviet Union 1985 Budapest 100 kg 1987 Clermont-Ferrand 100 kg 1990 Tokyo 100 kg 1991 Varna 100 kg World Championships Representing  Russia 1993 Toronto 100 kg 1995 Atlanta 130 kg Leri Khabelov OLY (Georgian: ლერი ხაბელოვი, …

Voce principale: Brescia Calcio. Associazione Calcio BresciaStagione 1950-1951Sport calcio Squadra Brescia Allenatore Luigi Bonizzoni Presidente Alberto Cucchi Serie B9º posto Maggiori presenzeCampionato: Zibetti (38) Miglior marcatoreCampionato: Bettini (22) 1949-1950 1951-1952 Si invita a seguire il modello di voce Questa pagina raccoglie le informazioni riguardanti l'Associazione Calcio Brescia nelle competizioni ufficiali della stagione 1950-1951. Indice 1 Stagione 2 Rosa 3 Risulta…

Monumento ai cadutiAutoreLuigi Venzano Data1927 Materialebronzo UbicazionePiazza Goffredo Mameli, Savona Coordinate44°18′30.19″N 8°28′44.98″E / 44.308386°N 8.479162°E44.308386; 8.479162Coordinate: 44°18′30.19″N 8°28′44.98″E / 44.308386°N 8.479162°E44.308386; 8.479162 Il Monumento ai Caduti della città di Savona si trova in Piazza Goffredo Mameli, piazza centrale della città.[1] Indice 1 Descrizione 2 Storia 3 Note 4 Altri progetti…

Dewan Perwakilan RakyatKota Langsa DPRK Langsa2019-2024JenisJenisUnikameral Jangka waktu5 tahunSejarahSesi baru dimulai2 September 2019PimpinanKetuaZulkifli Latief (PA) sejak 30 Desember 2019 Wakil Ketua ISaifullah (Golkar) sejak 28 Oktober 2019 Wakil Ketua IIIr. Joni (Demokrat) sejak 28 Oktober 2019 KomposisiAnggota25Partai & kursi  PDI-P (1)   NasDem (1)   Hanura (3)   Demokrat (4)   Golkar (4)   Gerindra (3)  …

Japanese manga series Grandpa and Grandma Turn Young AgainCover of the first volumeじいさんばあさん若返る(Jii-san Baa-san Wakagaeru)GenreRomantic comedy[1] MangaWritten byKagiri AraidoPublished byMedia FactoryImprintMF ComicsMagazineMonthly Comic Alunna(July 13, 2022 – present)DemographicSeinenOriginal runOctober 26, 2019 – presentVolumes7 (List of volumes) Anime television seriesDirected byMasayoshi NishidaWritten byYukie SugawaraMusic byTomoki Ha…

Gerald Tinker Nazionalità  Stati Uniti Altezza 180 cm Peso 76 kg Atletica leggera Specialità Velocità Società Kent State Golden Flashes Record 100 iarde 93 (1970) 100 m 101 (1972) 200 m 205 (1970) CarrieraNazionale Stati UnitiPalmarès Competizione Ori Argenti Bronzi Giochi olimpici 1 0 0 Per maggiori dettagli vedi qui Football americano Ruolo Wide receiver CarrieraSquadre di club 1974-75 Atlanta Falcons1975 Green Bay Packers   Modifica dati su Wikidata · Manuale Ge…

Азиатский барсук Научная классификация Домен:ЭукариотыЦарство:ЖивотныеПодцарство:ЭуметазоиБез ранга:Двусторонне-симметричныеБез ранга:ВторичноротыеТип:ХордовыеПодтип:ПозвоночныеИнфратип:ЧелюстноротыеНадкласс:ЧетвероногиеКлада:АмниотыКлада:СинапсидыКласс:Млеко…

Dutch car manufacturer A Spijkstaal van from 1984 Spijkstaal is a Dutch car company from Spijkenisse, Netherlands. It specializes in electric cars, especially trucks for industrial usage. Its electric carts operate in Amsterdam Airport Schiphol, flower auctions including the Royal FloraHolland, and military airfields.[1] Among the general public, Spijkstaal is mostly known for being the manufacturer of mobile grocery stores.[2][3][4] History A ParkShuttle bus in 2…

American county executive election 2010 Cuyahoga County executive election November 2, 2010 2014 → Turnout44.2%[1]   Candidate Ed FitzGerald Matt Dolan Party Democratic Republican Popular vote 188,475 133,646 Percentage 45.7% 30.3%   Candidate Ken Lanci Tim McCormack Party Independent Independent Popular vote 47,110 33,760 Percentage 11.4% 8.2% Results by municipalityFitzGerald:      30–40%      40–50% &…

Halaman ini berisi artikel tentang kawasan Polandia yang dianeksasi ke Jerman Nazi. Untuk kawasan lainnya yang diduduki pada 1939 namun tidak langsung dianeksasi, lihat Pemerintahan Umum. Kawasan Polandia yang dianeksasi oleh Jerman NaziPada warna tua, kawasan Polandia dianeksasi oleh Jerman Nazi dan Uni Soviet dengan Pemerintahan Umum semi-kolonial berwarna kuning muda (tengah)Pemisahan Polandia keempat – Pakta Nazi-Soviet Setelah Invasi Polandia pada permulaan Perang Dunia II, hampir seperem…

American baseball player (born 1991) Baseball player J. T. RealmutoRealmuto with the Philadelphia Phillies in 2022Philadelphia Phillies – No. 10CatcherBorn: (1991-03-18) March 18, 1991 (age 33)Del City, Oklahoma, U.S.Bats: RightThrows: RightMLB debutJune 5, 2014, for the Miami MarlinsMLB statistics (through May 11, 2024)Batting average.273Home runs159Runs batted in593 Teams Miami Marlins (2014–2018) Philadelphia Phillies (2019–present) Career highlights and awards 3× A…

1964 AFL All-Star Game East West 24 27 1234 Total East 101400 24 West 031410 27 DateJanuary 19, 1964StadiumJeppesen Stadium, Houston, TexasCo-MVPsKeith Lincoln (San Diego Chargers), Archie Matsos (Oakland Raiders)Attendance20,016TV in the United StatesNetworkABCAnnouncersCurt Gowdy, Paul Christman[1] Two touchdown passes by Babe Parilli had the East ahead 24–3 at halftime. The 1964 All-Star Game was the AFL's third annual season-ending showpiece, which featured the outstandin…

Untuk orang lain dengan nama yang sama, lihat Iskandar. Iskandar Bupati Ogan Komering Ilir ke-16Masa jabatan15 Januari 2014 – 3 November 2023PresidenSusilo Bambang YudhoyonoJoko WidodoGubernurAlex NoerdinHadi Prabowo (Pj.)Herman DeruWakilMuhammad Rifa'i (2014-2017)M. Dja'far Shodiq (2019-2024)PendahuluIshak MekkiRuslan Bahri (Plt.)PenggantiDjafar ShoddiqWakil Bupati Ogan Ilir ke-1Masa jabatan22 Agustus 2005 – 22 Agustus 2010PresidenSusilo Bambang YudhoyonoGubernurSy…

Kembali kehalaman sebelumnya