Introducción a Patrones de Diseño en C++ con Qt4/1.8 Makefile, qmake y archivos de proyecto

From Wikilibros
Jump to navigation Jump to search
Versión para imprimir esta pagina

Makefile, qmake, y Archivos de Proyecto[edit]

Las aplicaciones de C++ generalmente están compuestas por muchos archivos fuente, archivos de cabeceras y librerías externas. Durante el curso normal del desarrollo del proyecto, los archivos de origen y las librerías son agregadas, cambiadas o removidas. Durante la fase de prueba/desarrollo, el proyecto es recompilado y reenlazado muchas veces. Para producir un ejecutable, todos los archivos de origen cambiados deben ser recompilados y los archivos de objeto deben ser completamente reenlazados.


Tomando un rastro de todo, de todas las partes de cada uno un proyecto requiere un mecanismo que especifique con precisión los archivos involucrados, lar herramientas necesarias para construir, los objetivos intermedios y sus dependencias y el objetivo ejecutable final.


La utilidad más ampliamente usada para manejar el trabajo de construir un proyecto es make[1]. Este lee los detalles de las especificaciones del proyecto y las instrucciones del compilador desde un Makefile, se asemeja a un script de consola, pero contiene (como mínimo):


  • Reglas para construir ciertos tipos de archivos (p.e. para obtener un archivo .o desde un archivo .cpp, debemos correr gcc -c en el archivo .cpp)
  • Los objetivos que se especifican como ejecutables (o librerías) que deben ser construidos.
  • Dependencias que listan que objetivos necesitan ser reconstruidos cuando ciertos archivos son cambiados.


El comando make carga por defecto el archivo llamado Makefile desde su directorio de trabajo actual y realiza los pasos de consstrucción especificados (compilado y enlace)


El beneficio inmediato de usar make es que este recompila solamente los archivos que necesitan ser reconstruidos, en vez de recompilar a ciegas cada archivo cada vez. La Figura 1.2 es un diagrama que intenta mostrar los pasos involucrados en la construcción de una aplicación Qt. Para aprender más sobre make, recomendamos el libro The Linux development platform Escrito por Rafeeq Ur Rehman, Christopher Paul.

Figura 1.3[edit]

Pasos de Construcción de (q)make
Pasos de Construcción de (q)make

Con Qt, no es necesario escribir ningún Makefile. Qt proporciona una herramienta llamada qmake para generar los Makefile por tí. Es poco necesario para quienes corren make y entienden su salida. La mayoría de los IDE corren make (o algo similar) bajo la cubierta y después muestran o filtran su salida.


La transcripción de abajo muestra que archivos son creados en cada paso del proceso de construcción para el Ejemplo 1.6:


src/early-examples/example1> ls -sF
total 296
  4 fac1.cpp    
src/early-examples/example1> qmake -project
src/early-examples/example1> ls -sF
total 296
  4 fac1.cpp  4  example1.pro    
src/early-examples/example1> qmake
src/early-examples/example1> ls -sF
total 296
  4 fac1.cpp  4 example1.pro   4 Makefile    
src/early-examples/example1> make
g++ -c -pipe -g -Wall -W -D_REENTRANT -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED
 -I/usr/local/Trolltech/Qt-4.4.1/mkspecs/linux-g++ -I.
 -I/usr/local/Trolltech/Qt-4.4.1/include/QtCore
 -I/usr/local/Trolltech/Qt-4.4.1/include/QtCore
 -I/usr/local/Trolltech/Qt-4.4.1/include/QtGui
 -I/usr/local/Trolltech/Qt-4.4.1/include/QtGui
 -I/usr/local/Trolltech/Qt-4.4.1/include -I. -I. -o fac1.o fac1.cpp
g++ -Wl,-rpath,/usr/local/Trolltech/Qt-4.4.1/lib -o example1 fac1.o
 -L/usr/local/Trolltech/Qt-4.4.1/lib -lQtGui -L/usr/local/Trolltech/Qt-4.4.1/lib
 -L/usr/X11R6/lib -pthread -lpng -lSM -lICE -pthread -pthread -lXi -lXrender
 -lXrandr -lfreetype -lfontconfig -lXext -lX11 -lQtCore -lz -lm -pthread
 -lgthread-2.0 -lrt -lglib-2.0 -ldl -lpthread
src/early-examples/example1> ls -sF
total 288
124 example1*    4 example1.pro    4 fac1.cpp  148 fac1.o    8 Makefile
total 420
src/early-examples/example1>                       

qmake -project crea un proyecto cuyo nombre es el mismo que el directorio de los archivos de origen. make creará un ejecutable con el mismo nombre del proyecto.


Nota que nosotros podemos ver los argumentos pasados al compilador cuando corremos make. Si se encuentra algun error, lo veremos también.


Versión para imprimir esta pagina

  1. En MS Dev Studio, se le llama nmake