Pensar en C++ (Volumen 1) - Grupo ARCO
Pensar en C++ (Volumen 1) - Grupo ARCO
Pensar en C++ (Volumen 1) - Grupo ARCO
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
✐<br />
✐<br />
✐<br />
“Volum<strong>en</strong>1” — 2012/1/12 — 13:52 — page 131 — #169<br />
✐<br />
3.11. Make: cómo hacer compilación separada<br />
correspondi<strong>en</strong>tes, y si una fichero fu<strong>en</strong>te es más reci<strong>en</strong>te que su fichero resultante,<br />
make recompila ese fichero fu<strong>en</strong>te. make sólo recompila los ficheros fu<strong>en</strong>te que<br />
han cambiado, y cualquier otro fichero que esté afectado por el fichero modificado.<br />
Usando make no t<strong>en</strong>drá que recompilar todos los ficheros de su proyecto cada vez<br />
que haga un cambio, ni t<strong>en</strong>drá que comprobar si todo se construye adecuadam<strong>en</strong>te.<br />
El makefile conti<strong>en</strong>e todas las instrucciones para montar el proyecto. Apr<strong>en</strong>der<br />
a usar make le permitirá ahorrar mucho tiempo y frustraciones. También descubrirá<br />
que make es el método típico para instalar software nuevo <strong>en</strong> máquinas GNU o<br />
Unix 7 (aunque esos makefiles ti<strong>en</strong><strong>en</strong> a ser mucho más complicados que los que<br />
aparec<strong>en</strong> <strong>en</strong> este libro, y a m<strong>en</strong>udo podrá g<strong>en</strong>erar automáticam<strong>en</strong>te un makefile<br />
para su máquina particular como parte del proceso de instalación).<br />
Como make está disponible de algún modo para prácticam<strong>en</strong>te todos los compiladores<br />
de <strong>C++</strong> (incluso si no lo está, puede usar makes libres con cualquier compilador),<br />
será la herrami<strong>en</strong>ta usada <strong>en</strong> este libro. Sin embargo, los fabricantes de compiladores<br />
crean también sus propias herrami<strong>en</strong>tas para construir proyectos. Estás<br />
herrami<strong>en</strong>tas preguntan qué ficheros hay <strong>en</strong> el proyecto y determinan las relaciones<br />
<strong>en</strong>tre ellos. Estas herrami<strong>en</strong>tas utilizan algo similar a un makefile, normalm<strong>en</strong>te<br />
llamado fichero de proyecto, pero el <strong>en</strong>torno de programación manti<strong>en</strong>e este fichero<br />
para que el programador no t<strong>en</strong>ga que preocuparse de él. La configuración y uso de<br />
los ficheros de proyecto varía de un <strong>en</strong>torno de desarrollo a otro, de modo que t<strong>en</strong>drá<br />
que buscar la docum<strong>en</strong>tación apropiada <strong>en</strong> cada caso (aunque esas herrami<strong>en</strong>tas<br />
proporcionadas por el fabricante normalm<strong>en</strong>te son tan simples de usar que es fácil<br />
apr<strong>en</strong>der a usarlas jugando un poco con ellas - mi método educativo favorito).<br />
Los makefiles que acompañan a este libro deberían funcionar bi<strong>en</strong> incluso si<br />
también usa una herrami<strong>en</strong>ta específica para construcción de proyectos.<br />
3.11.1. Las actividades de Make<br />
Cuando escribe make (o cualquiera que sea el nombre del su programa make),<br />
make busca un fichero llamado makefile o Makefile <strong>en</strong> el directorio actual, que<br />
usted habrá creado para su proyecto. Este fichero conti<strong>en</strong>e una lista de dep<strong>en</strong>d<strong>en</strong>cias<br />
<strong>en</strong>tre ficheros fu<strong>en</strong>te, make comprueba las fechas de los ficheros. Si un fichero ti<strong>en</strong>e<br />
una fecha más antigua que el fichero del que dep<strong>en</strong>de, make ejecuta la regla indicada<br />
después de la dep<strong>en</strong>d<strong>en</strong>cia.<br />
Todos los com<strong>en</strong>tarios de los makefiles empiezan con un # y continúan hasta<br />
el fina de la línea.<br />
Como un ejemplo s<strong>en</strong>cillo, el makefile para una programa llamado «hello» podría<br />
cont<strong>en</strong>er:<br />
# A comm<strong>en</strong>t<br />
hello.exe: hello.cpp<br />
mycompiler hello.cpp<br />
Esto dice que hello.exe (el objetivo) dep<strong>en</strong>de de hello.cpp. Cuando hello.<br />
cpp ti<strong>en</strong>e una fecha más reci<strong>en</strong>te que hello.exe, make ejecuta la «regla» mycompiler<br />
hello.cpp. Puede haber múltiples dep<strong>en</strong>d<strong>en</strong>cias y múltiples reglas. Muchas implem<strong>en</strong>taciones<br />
de make requier<strong>en</strong> que todas las reglas empiec<strong>en</strong> con un tabulador.<br />
7 (N. de T.) El método del que habla el autor se refiere normalm<strong>en</strong>te a software instalado a partir de<br />
su código fu<strong>en</strong>te. La instalación de paquetes binarios es mucho más simple y automatizada <strong>en</strong> la mayoría<br />
de las variantes actuales del sistema operativo GNU.<br />
131<br />
✐<br />
✐<br />
✐<br />
✐