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