13.01.2015 Views

Pensar en C++ (Volumen 1) - Grupo ARCO

Pensar en C++ (Volumen 1) - Grupo ARCO

Pensar en C++ (Volumen 1) - Grupo ARCO

SHOW MORE
SHOW LESS

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 />

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!