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 134 — #172<br />

✐<br />

Capítulo 3. C <strong>en</strong> <strong>C++</strong><br />

3.11.2. Los Makefiles de este libro<br />

Usando el programa ExtractCode.cpp del Volum<strong>en</strong> 2 de este libro, se han<br />

extraido automáticam<strong>en</strong>te todos los listado de código de este libro a partir de la<br />

versión <strong>en</strong> texto ASCII y se han colocado <strong>en</strong> subdirectorios de acuerdo a sus capítulos.<br />

Además, ExtractCode.cpp crea varios makefiles <strong>en</strong> cada subdirectorio<br />

(con nombres difer<strong>en</strong>tes) para que pueda ir a cualquier subdirectorio y escribir make<br />

-f mycompiler.makefile (sustituy<strong>en</strong>do «mycompiler» por el nombre de su compilador,<br />

la opción -f dice «utiliza lo sigui<strong>en</strong>te como un makefile»). Finalm<strong>en</strong>te,<br />

ExtractCode.cpp crea un makefile «maestro» <strong>en</strong> el directorio raíz donde se hayan<br />

extraido los fichero del libro, y este makefile desci<strong>en</strong>da a cada subdirectorio y<br />

llama a make con el makefile apropiado. De este modo, se puede compilar todo<br />

el código de los listados del libro invocando un único comando make, y el proceso<br />

parará cada vez que su compilador no pueda manejar un fichero particular (t<strong>en</strong>ga<br />

pres<strong>en</strong>te que un compilador conforme al Estándar <strong>C++</strong> debería ser compatible con<br />

todos los ficheros de este libro). Como algunas implem<strong>en</strong>taciones de make varían de<br />

un sistema a otro, <strong>en</strong> los makefiles g<strong>en</strong>erados se usan sólo las características más<br />

básicas y comunes.<br />

3.11.3. Un ejemplo de Makefile<br />

Tal como se m<strong>en</strong>cionaba, la herrami<strong>en</strong>ta de extracción de código ExtractCode.<br />

cpp g<strong>en</strong>era automáticam<strong>en</strong>te makefiles para cada capítulo. Por eso, los makefiles<br />

de cada capítulo no aparec<strong>en</strong> <strong>en</strong> el libro (todos los makefiles están empaquetados<br />

con el código fu<strong>en</strong>te, que se puede descargar de www.BruceEckel.com). Sin embargo,<br />

es útil ver un ejemplo de un makefile. Lo sigui<strong>en</strong>te es una versión recortada<br />

de uno de esos makefiles g<strong>en</strong>erados automáticam<strong>en</strong>te para este capítulo. Encontrará<br />

más de un makefile <strong>en</strong> cada subdirectorio (ti<strong>en</strong><strong>en</strong> nombres difer<strong>en</strong>tes; puede<br />

invocar uno concreto con make -f. Éste es para GNU <strong>C++</strong>:<br />

CPP = g++<br />

OFLAG = -o<br />

.SUFFIXES : .o .cpp .c<br />

.cpp.o :<br />

$(CPP) $(CPPFLAGS) -c $<<br />

.c.o :<br />

$(CPP) $(CPPFLAGS) -c $<<br />

all: \<br />

Return \<br />

Declare \<br />

Ifth<strong>en</strong> \<br />

Guess \<br />

Guess2<br />

# Rest of the files for this chapter not shown<br />

Return: Return.o<br />

$(CPP) $(OFLAG)Return Return.o<br />

Declare: Declare.o<br />

$(CPP) $(OFLAG)Declare Declare.o<br />

Ifth<strong>en</strong>: Ifth<strong>en</strong>.o<br />

$(CPP) $(OFLAG)Ifth<strong>en</strong> Ifth<strong>en</strong>.o<br />

134<br />

✐<br />

✐<br />

✐<br />

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

Saved successfully!

Ooh no, something went wrong!