A partir de QT, Parte III - qmake y Pro.

07 de mayo 2008 · Escrito en C / C + + , Qt

En este tercer post vamos a hablar de la utilidad del intervalo QT y qmake archivos *. pro del proyecto. Vamos a entender lo que es el qmake y cómo configurar los diferentes tipos de proyectos.

El qmake

El qmake es una utilidad que viene con el marco del intervalo QT. Su función es analizar un archivo de proyecto (*. pro) y generar un Makefile ya la normativa de la moc , uic opciones y QT incorporado. Sin ella, por ejemplo, tendría que llamar explícitamente a moc para crear los archivos * moc_ y van explícitamente al compilador y enlazador opciones para incluir la QT correcta a nuestros proyectos.

La documentación oficial sobre los archivos de proyecto qmake y se puede encontrar aquí .

Archivos *. pro del proyecto

Para crear un archivo de proyecto simple de la línea de comandos, escriba el directorio del proyecto y el tipo:

  user @ host $ qmake-proyecto 

Hecho, ha creado un archivo con el mismo nombre que el directorio actual, seguido de la extensión. Pro. Si ya existen archivos de este directorio reconocido por qmake, como archivos de código fuente (. H,. Cpp), formas (. Ui), etc, que se añaden automáticamente al archivo del proyecto.

Creó el archivo. Pro, para ejecutar qmake sin argumentos que tratará de analizar un archivo. Pro con el mismo nombre que el directorio actual. Incluso se puede especificar un archivo de proyecto alternativo, como un argumento a favor de qmake. Si todo funciona bien, un Makefile se crea, y con una marca simple, podemos construir el proyecto.

Los archivos de proyecto son los archivos normales de texto que contiene macros y directivas que serán interpretados por qmake para crear el Makefile. La lista completa de opciones se puede encontrar en la documentación en línea . Los más comunes son:

PLANTILLA: Indicar el tipo de proyecto. Use 'app' para los ejecutables del programa de fácil cuidado o 'lib' para crear bibliotecas.

CONFIG: Añadir varias opciones para el proyecto. Entre ellos, "debug" para añadir información de depuración, 'staticlib "junto con" lib "de la plantilla, que se crea abiblioteca estática (. En un linux).

OBJETIVO: El nombre y la ubicación del objetivo, es decir, la aplicación o una biblioteca.

MOC_DIR: directorio donde los archivos serán graduados moc_ *. Útil para que no contaminen el directorio del código fuente.

OBJECTS_DIR: Como complemento a la opción anterior indica que el directorio donde los archivos que va a generar el código objeto (*. o).

IncludePath: directorios externos en las cabeceras se van a utilizar en el proyecto, como los encabezados de librerías externas.

DEPENDPATH: externa directorios de código fuente para ser usado por el proyecto.

Encabezados: los archivos del proyecto de cabecera (*. h).

FORMAS: Los archivos generados con la interfaz de QtDesigner (*. ui).

FUENTES: Los archivos de la implementación del código fuente del proyecto (*. cpp).

LIBS: librerías externas utilizadas por el proyecto. -L indica la ruta a la biblioteca, e-l dice que el nombre de la biblioteca.

QT: los módulos de QT que añadir / eliminar del proyecto. Si el pasado "QT = (es igual a QT vacío), QT hay ningún módulo utilizado en el proyecto.

SUBDIRS: Usado en conjunción con "subdirectorios" la plantilla indica el qmake subdirectorios complementos deben buscar otros archivos de proyecto.

Con este cambio en que podemos crear diseños simples ALGUNOS.

Una sencilla aplicación:

  # La primera línea crea un personaje de este comentario
 # El nombre de este archivo es "app.pro '
 PLANTILLA = app # Nuestra plantilla es una aplicación llamada
 TARGET = bin / # myapp.bin myapp.bin en el directorio. / Bin
 MOC_DIR = tmp / moc # Directorio para MOCs, opcional
 OBJECTS_DIR = tmp / obj # directorio de código objeto, opcional
 HEADERS + = MyClass.h # Header clase MyClass
 FUENTES + = main.cpp # Se utiliza para organizar los archivos en
                 # MyClass.cpp líneas múltiples. 

Una biblioteca simple:

  # El nombre de este archivo es "lib.pro '
 TEMPLATE = lib # Nuestra biblioteca de plantillas es un
 # CONFIG + = dinámica de dll, llamado
 TARGET = lib / mylib # mylib en el directorio. / Lib
 MOC_DIR = tmp / moc # Directorio para MOCs, opcional
 OBJECTS_DIR = tmp / obj # directorio de código objeto, opcional
 HEADERS + = MyClass.h # Header clase MyClass
 FUENTES + = MyClass.cpp # Implementación de la clase MyClass 

Una aplicación que utiliza una biblioteca externa:

  # El nombre de este archivo es "mixed.pro '
 PLANTILLA = app # Nuestra plantilla es una aplicación llamada
 TARGET = bin / # myapp.lkd myapp.lkd en el directorio. / Bin
 MOC_DIR = tmp / moc # Directorio para MOCs, opcional
 OBJECTS_DIR = tmp / obj # directorio de código objeto, opcional
 IncludePath + =.  # Dir, donde se encuentran las cabeceras de la librería externa
 FUENTES + = main.cpp # Implementación de la aplicación. 

Directorios anidados:

Para utilizar directorios anidados, necesitamos un archivo de proyecto en el directorio actual, y otro en el subdirectorio.

En el directorio actual, utilice las opciones:

  TEMPLATE = subdirectorios
 SUBDIRS = [lista de los subdirectorios que se compilan en la secuencia] 

Si usted ingresa sólo el nombre del directorio, debe contener un archivo de proyecto con su nombre. Es posible, sin embargo, un informe más amplio directamente a la lista de subdirectorios, un directorio seguido de un archivo de proyecto con el nombre de los cuáqueros.

El código fuente completo de los ejemplos en este tutorial se puede encontrar aquí .

En conclusión

El qmake es una herramienta sencilla y muy potente que facilita enormemente la vida de uno que tiene que manejar árbol de proyectos complejos, incluso si el proyecto no hace uso de QT (sólo tiene que añadir al final de la '= QT). Añadir a esto el hecho de que los archivos del proyecto tiene una sintaxis muy sencilla e intuitiva algo. Si necesita ajustes más precisos, la documentación en línea le dará una docena de opciones para la diversión.

Con o sin QT QT qmake es siempre una buena opción para la gestión del árbol de construcción.

Comentarios

    Sitio en Disqus