© 2004-2006 Manuel ColladoMake-1 Utilidad Make. © 2004-2006 Manuel ColladoMake-2 Contenido n...
Preview:
Citation preview
- Diapositiva 1
- 2004-2006 Manuel ColladoMake-1 Utilidad Make
- Diapositiva 2
- 2004-2006 Manuel ColladoMake-2 Contenido n Objetivo y funciones
n Proceso de compilacin y montaje n Dependencias y regeneracin
selectiva n Makefile n Aplicaciones n Generacin automtica de
dependencias
- Diapositiva 3
- 2004-2006 Manuel ColladoMake-3 Objetivo y funciones n Objetivo:
l Generar o actualizar automticamente ficheros dependientes de
otros, de forma selectiva n Modo de operacin: l Compara la fecha de
actualizacin de cada fichero con la de los que depende, y si est
anticuado lo regenera n Aplicacin tpica: l Compilacin y montaje de
programas
- Diapositiva 4
- 2004-2006 Manuel ColladoMake-4 gcc -c alfa.c -o alfa.o
alfa.calfa.o beta.cbeta.o gcc -c beta.c -o beta.o gcc -o prog
alfa.o beta.o prog Compilacin y montaje
- Diapositiva 5
- 2004-2006 Manuel ColladoMake-5 Recompilacin selectiva gcc -c
alfa.c -o alfa.o alfa.calfa.o beta.cbeta.o gcc -o prog alfa.o
beta.o prog * = modificado * **
- Diapositiva 6
- 2004-2006 Manuel ColladoMake-6 Recompilacin selectiva
alfa.calfa.o beta.cbeta.o gcc -c beta.c -o beta.o gcc -o prog
alfa.o beta.o prog * * = modificado * *
- Diapositiva 7
- 2004-2006 Manuel ColladoMake-7 Comparacin de fechas
alfa.calfa.o beta.c beta.o gcc -c beta.c -o beta.o gcc -o prog
alfa.o beta.o prog 12.3012.01 12.0011.15 12.02 12.31 12.32
- Diapositiva 8
- 2004-2006 Manuel ColladoMake-8 Dependencias mltiples ajustar
parrafo palabra linea
- Diapositiva 9
- 2004-2006 Manuel ColladoMake-9 Dependencias mltiples
ajustar.cpp parrafo.h parrafo.cpp linea.h linea.cpp palabra.h
palabra.cpp ajustar.o parrafo.o linea.o palabra.o ajustar
- Diapositiva 10
- 2004-2006 Manuel ColladoMake-10 Dependencias mltiples
ajustar.cpp parrafo.h parrafo.cpp linea.h linea.cpp (*) palabra.h
palabra.cpp ajustar.o parrafo.o linea.o (*) palabra.o ajustar
(*)
- Diapositiva 11
- 2004-2006 Manuel ColladoMake-11 Dependencias mltiples
ajustar.cpp parrafo.h parrafo.cpp linea.h (*) linea.cpp palabra.h
palabra.cpp ajustar.o (*) parrafo.o (*) linea.o (*) palabra.o
ajustar (*)
- Diapositiva 12
- 2004-2006 Manuel ColladoMake-12 Makefile n Dependencias y
acciones objetivo: dependencia dependencia... accion... objetivo:
dependencia... accion... Nota: el smbolo es el carcter de
tabulacin
- Diapositiva 13
- 2004-2006 Manuel ColladoMake-13 Ejemplo de Makefile ajustar:
ajustar.o parrafo.o linea.o palabra.o gcc -o ajustar ajustar.o
parrafo.o linea.o \ palabra.o palabra.o: palabra.cpp palabra.h gcc
-c palabra.cpp -o palabra.o linea.o: linea.cpp linea.h palabra.h
gcc -c linea.cpp -o linea.o...
- Diapositiva 14
- 2004-2006 Manuel ColladoMake-14 Variables y reglas implcitas
OBJS = ajustar.o parrafo.o linea.o palabra.o ajustar: $(OBJS) gcc
-o ajustar $(OBJS) %.o : %.cpp gcc -c $< -o $@ palabra.o:
palabra.cpp palabra.h linea.o: linea.cpp linea.h palabra.h...
- Diapositiva 15
- 2004-2006 Manuel ColladoMake-15 Otras aplicaciones n Cualquier
situacin en que unos ficheros se actualizan a partir de otros que
cambian l Hacer copias de backup l Generar formatos finales de
documentos l Actualizar contenido de sitios web l Ejecutar pruebas
de programas l etc.
- Diapositiva 16
- 2004-2006 Manuel ColladoMake-16 Ejemplo n Backup/Mirror
incremental directoriocopia fichero1 fichero1 fichero2 fichero2
fichero3 fichero3 Situacin inicial
- Diapositiva 17
- 2004-2006 Manuel ColladoMake-17 Ejemplo n Backup/Mirror
incremental directoriocopia fichero1 fichero1 fichero2 fichero2
fichero3 fichero3... ficheroN Modificado fichero2, nuevo
ficheroN
- Diapositiva 18
- 2004-2006 Manuel ColladoMake-18 Ejemplo n Backup/Mirror
incremental directoriocopia fichero1 fichero1 fichero2 fichero2
fichero3 fichero3...... ficheroN fichero N Slo hay que copiar lo
que cambia
- Diapositiva 19
- 2004-2006 Manuel ColladoMake-19 Ejemplo n Backup incremental
(1) BAK/fichero1: fichero1 copy fichero1 BAK BAK/fichero2: fichero2
copy fichero2 BAK...
- Diapositiva 20
- 2004-2006 Manuel ColladoMake-20 Ejemplo n Backup incremental
(2) copia: *.c *.h copy $? BAK touch copia
- Diapositiva 21 ajustar.o: ajustar.cpp palabra.h... >linea.o:
linea.cpp linea.h palabra.h > palabra.o: palabra.cpp palabra.h
> parrafo.o: parrafo.cpp parrafo.h linea.h...">
- 2004-2006 Manuel ColladoMake-21 Dependencias automticas
makedepend / gcc -MM Analizar sentencias #include "fichero.h" n
Ejemplo: usando gcc gcc -MM *.cpp >ajustar.o: ajustar.cpp
palabra.h... >linea.o: linea.cpp linea.h palabra.h >
palabra.o: palabra.cpp palabra.h > parrafo.o: parrafo.cpp
parrafo.h linea.h...