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

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

arco.esi.uclm.es
from arco.esi.uclm.es More from this publisher
13.01.2015 Views

✐ ✐ ✐ “Volumen1” — 2012/1/12 — 13:52 — page 130 — #168 ✐ Capítulo 3. C en C++ //: C03:FunctionTable.cpp // Using an array of pointers to functions #include using namespace std; // A macro to define dummy functions: #define DF(N) void N() { \ cout

✐ ✐ ✐ “Volumen1” — 2012/1/12 — 13:52 — page 131 — #169 ✐ 3.11. Make: cómo hacer compilación separada correspondientes, y si una fichero fuente es más reciente que su fichero resultante, make recompila ese fichero fuente. make sólo recompila los ficheros fuente que han cambiado, y cualquier otro fichero que esté afectado por el fichero modificado. Usando make no tendrá que recompilar todos los ficheros de su proyecto cada vez que haga un cambio, ni tendrá que comprobar si todo se construye adecuadamente. El makefile contiene todas las instrucciones para montar el proyecto. Aprender a usar make le permitirá ahorrar mucho tiempo y frustraciones. También descubrirá que make es el método típico para instalar software nuevo en máquinas GNU o Unix 7 (aunque esos makefiles tienen a ser mucho más complicados que los que aparecen en este libro, y a menudo podrá generar automáticamente un makefile para su máquina particular como parte del proceso de instalación). Como make está disponible de algún modo para prácticamente todos los compiladores de C++ (incluso si no lo está, puede usar makes libres con cualquier compilador), será la herramienta usada en este libro. Sin embargo, los fabricantes de compiladores crean también sus propias herramientas para construir proyectos. Estás herramientas preguntan qué ficheros hay en el proyecto y determinan las relaciones entre ellos. Estas herramientas utilizan algo similar a un makefile, normalmente llamado fichero de proyecto, pero el entorno de programación mantiene este fichero para que el programador no tenga que preocuparse de él. La configuración y uso de los ficheros de proyecto varía de un entorno de desarrollo a otro, de modo que tendrá que buscar la documentación apropiada en cada caso (aunque esas herramientas proporcionadas por el fabricante normalmente son tan simples de usar que es fácil aprender a usarlas jugando un poco con ellas - mi método educativo favorito). Los makefiles que acompañan a este libro deberían funcionar bien incluso si también usa una herramienta específica para construcción de proyectos. 3.11.1. Las actividades de Make Cuando escribe make (o cualquiera que sea el nombre del su programa make), make busca un fichero llamado makefile o Makefile en el directorio actual, que usted habrá creado para su proyecto. Este fichero contiene una lista de dependencias entre ficheros fuente, make comprueba las fechas de los ficheros. Si un fichero tiene una fecha más antigua que el fichero del que depende, make ejecuta la regla indicada después de la dependencia. Todos los comentarios de los makefiles empiezan con un # y continúan hasta el fina de la línea. Como un ejemplo sencillo, el makefile para una programa llamado «hello» podría contener: # A comment hello.exe: hello.cpp mycompiler hello.cpp Esto dice que hello.exe (el objetivo) depende de hello.cpp. Cuando hello. cpp tiene una fecha más reciente que hello.exe, make ejecuta la «regla» mycompiler hello.cpp. Puede haber múltiples dependencias y múltiples reglas. Muchas implementaciones de make requieren que todas las reglas empiecen con un tabulador. 7 (N. de T.) El método del que habla el autor se refiere normalmente a software instalado a partir de su código fuente. La instalación de paquetes binarios es mucho más simple y automatizada en la mayoría de las variantes actuales del sistema operativo GNU. 131 ✐ ✐ ✐ ✐

✐<br />

✐<br />

✐<br />

“Volum<strong>en</strong>1” — 2012/1/12 — 13:52 — page 130 — #168<br />

✐<br />

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

//: C03:FunctionTable.cpp<br />

// Using an array of pointers to functions<br />

#include <br />

using namespace std;<br />

// A macro to define dummy functions:<br />

#define DF(N) void N() { \<br />

cout

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

Saved successfully!

Ooh no, something went wrong!