Makefile |
MAKEFILE 1.1 NASCITA DEI MAKEFILE Come tutti i programmatori sanno, creare un programma eseguibile da più file sorgenti consiste nel compilare separatamente i file sorgenti uno ad uno e poi unirli nel file eseguibile finale. Quando i file sorgente sono molti, la compilazione potrebbe diventare noiosa e snervante.Per questo andiamo semplicemente a creare: - un file contenente il compilatore da usare; - il modo per usarlo; - quali file compilare; - il file eseguibile (programma o libreria che esso sia) e altre cose sempre utili (come la directory dove si possono trovare le librerie necessarie ed i file di include). Tutto questo è il contenuto del file Makefile.
1.2 IL COMANDO MAKE Il comando make permette di sviluppare programmi di notevoli dimensioni mantenendo traccia di quali porzioni dell’intero programma hanno subito modifiche. Solo tali parti però verranno compilate. In seguito viene proposto l'esempio del comando make utilizzato nell'esercizio per la compilazione delle varie parti del server. PROGS=error my_io my_signal str_srv_tris str_cli_tris tris_client tris_server CC = gcc CCN = gcc -std=c99 all:$(PROGS) error: error.c ${CC} -c error.c my_io : my_io.c ${CC} -c my_io.c my_signal: my_signal.c ${CC} -c my_signal.c str_srv_tris: str_srv_tris.c ${CC} -c str_srv_tris.c str_cli_tris: str_cli_tris.c ${CC} -c str_cli_tris.c tris_client:tris_client.o str_cli_tris.o my_io.o error.o ${CC} -o $@ $^ tris_server:tris_server.o str_srv_tris.o my_signal.o my_io.o error.o ${CC} -o $@ $^ 1.3 ALTRI COMANDI È stato creato per cancellare tutti i file inutili. clean: rm -f *.o rm -f *.*~ rm -f *~ Nel caso successivo, il comando “make shish”, è stato creato per cancellare dei file binari. Con questo comando, andiamo a cancellare direttamente i file scritti (“rm somma_client” e “rm somma_server”) successivamente al comando “make clean”, senza doverli selezionare uno ad uno. shish: rm -f *.o rm -f *.*~ rm -f *~ rm tris_client rm tris_server
|
Gruppi | |||||
Applicazione - Alessandro Angelone - Mattia Vinante - Patrick Coviello - Daniel Amadori |
Documentazione - Daniele Balzamà - Matteo Forti - Lorenzo Monorchio - Giovanni Pani - Dyllan Ruales - Nicole De Min - Usama Chaudhry |
Sviluppo Web - Mateo Myftaraj - Fabio Travagli - Nicola Imperiale - Andrea Pigozzo |
LaTeX - Michele Candioli - Patrick Coviello - Michael Barba - Marco Filippi |
Traduzione - Samuele Aldi - Emil Kob - Luca Viola - Stanislav Nacu |
Project Leader - Simone Tagliapietra Coordinatori - Prof. Iaccarino - Prof. Minichiello |