Creación de archivos de proyecto
Los archivos de proyecto contienen toda la información requerida por qmake para compilar su aplicación, biblioteca o plugin. Generalmente, se utiliza una serie de declaraciones para especificar los recursos en el proyecto, pero el soporte para construcciones de programación simples le permite describir diferentes procesos de compilación para diferentes plataformas y entornos.
Elementos del archivo de proyecto
El formato de archivo de proyecto utilizado por qmake se puede utilizar para apoyar tanto los sistemas de construcción simples y bastante complejos. Los archivos de proyecto simples utilizan un estilo declarativo directo, definiendo variables estándar para indicar los archivos fuente y de cabecera que se utilizan en el proyecto. Los proyectos complejos pueden utilizar estructuras de flujo de control para ajustar el proceso de compilación.
Las siguientes secciones describen los distintos tipos de elementos utilizados en los archivos de proyecto.
Variables
En un fichero de proyecto, las variables se utilizan para contener listas de cadenas. En los proyectos más simples, estas variables informan a qmake sobre las opciones de configuración a utilizar, o proporcionan nombres de archivo y rutas a utilizar en el proceso de construcción.
qmake busca ciertas variables en cada archivo de proyecto, y utiliza el contenido de estos para determinar lo que debe escribir en un Makefile. Por ejemplo, las listas de valores en las variables HEADERS y SOURCES se utilizan para decirle a qmake acerca de los archivos de cabecera y de código fuente en el mismo directorio que el archivo de proyecto.
Las variables también pueden utilizarse internamente para almacenar listas temporales de valores, y las listas de valores existentes pueden sobrescribirse o ampliarse con nuevos valores.
El siguiente fragmento ilustra cómo se asignan listas de valores a las variables:
HEADERS = mainwindow.h paintwidget.h
La lista de valores de una variable se amplía de la siguiente manera:
SOURCES = main.cpp mainwindow.cpp \
paintwidget.cpp
CONFIG += consoleNota: La primera asignación sólo incluye los valores especificados en la misma línea que la variable HEADERS. La segunda asignación divide los valores de la variable SOURCES entre líneas utilizando una barra invertida (\).
La variable CONFIG es otra variable especial que qmake utiliza al generar un Makefile. Se discute en Configuración General. En el fragmento anterior, console se añade a la lista de valores existentes contenidos en CONFIG.
La siguiente tabla enumera algunas variables de uso frecuente y describe su contenido. Para obtener una lista completa de variables y sus descripciones, consulte Variables.
| Variable | Contenido |
|---|---|
| CONFIG | Opciones generales de configuración del proyecto. |
| DESTDIR | El directorio en el que se colocará el archivo ejecutable o binario. |
| FORMULARIOS | Una lista de archivos de interfaz de usuario que serán procesados por el User Interface Compiler (UIC). |
| CABECERAS | Una lista de nombres de archivos de cabecera (.h) utilizados al compilar el proyecto. |
| QT | Una lista de módulos Qt utilizados en el proyecto. |
| RECURSOS | Una lista de archivos de recursos (.qrc) que se incluirán en el proyecto final. Ver El Sistema de Recursos Qt para más información sobre estos archivos. |
| FUENTES | Una lista de archivos de código fuente que se utilizarán al construir el proyecto. |
| PLANTILLA | La plantilla a utilizar para el proyecto. Esto determina si la salida del proceso de construcción será una aplicación, una librería o un plugin. |
El contenido de una variable puede leerse anteponiendo al nombre de la variable $$. Esto se puede utilizar para asignar el contenido de una variable a otra:
TEMP_SOURCES = $$SOURCES
El operador $$ se utiliza ampliamente con las funciones incorporadas que operan con cadenas y listas de valores. Para obtener más información, consulte Lenguaje qmake.
Espacio en blanco
Normalmente, los espacios en blanco separan los valores en las asignaciones de variables. Para especificar valores que contienen espacios, debe encerrar los valores entre comillas dobles:
DEST = "Program Files"
El texto entrecomillado se trata como un único elemento en la lista de valores que contiene la variable. Se utiliza un método similar para tratar las rutas que contienen espacios, especialmente al definir las variables INCLUDEPATH y LIBS para la plataforma Windows:
win32:INCLUDEPATH += "C:/mylibs/extra headers" unix:INCLUDEPATH += "/home/user/extra headers"
Comentarios
Puede añadir comentarios a los archivos de proyecto. Los comentarios comienzan con el carácter # y continúan hasta el final de la misma línea. Por ejemplo:
# Comments usually start at the beginning of a line, but they # can also follow other content on the same line.
Para incluir el carácter # en las asignaciones de variables, es necesario utilizar el contenido de la variable incorporada LITERAL_HASH.
Funciones incorporadas y flujo de control
qmake proporciona una serie de funciones integradas que permiten procesar el contenido de las variables. La función más utilizada en archivos de proyecto simples es la función include() que toma un nombre de archivo como argumento. El contenido del archivo dado se incluye en el archivo de proyecto en el lugar donde se utiliza la función include. La función include es la más utilizada para incluir otros archivos de proyecto:
include(other.pro)
El soporte para estructuras condicionales está disponible a través de ámbitos que se comportan como las sentencias if en los lenguajes de programación:
win32 {
SOURCES += paintwidget_win.cpp
}Las asignaciones dentro de las llaves sólo se realizan si la condición es verdadera. En este caso, la opción win32 CONFIG debe estar activada. Esto ocurre automáticamente en Windows. La llave de apertura debe estar en la misma línea que la condición.
Las funciones incorporadas como find(), unique() y count() permiten realizar operaciones más complejas con variables que normalmente requerirían bucles. Estas funciones y muchas otras sirven para manipular cadenas y rutas, admitir entradas del usuario y llamar a herramientas externas. Para obtener más información sobre el uso de las funciones, consulte Lenguaje de qmake. Para obtener listas de todas las funciones y sus descripciones, consulte Funciones de reemplazo y Funciones de prueba.
Plantillas de proyecto
La variable TEMPLATE se utiliza para definir el tipo de proyecto que se construirá. Si esto no se declara en el archivo de proyecto, qmake asume que una aplicación debe ser construida, y generará un Makefile apropiado (o archivo equivalente) para el propósito.
La siguiente tabla resume los tipos de proyectos disponibles y describe los archivos que qmake generará para cada uno de ellos:
| Plantilla | qmake Salida |
|---|---|
| app (por defecto) | Makefile para construir una aplicación. |
| lib | Makefile para construir una librería. |
| aux | Makefile para no construir nada. Utilícelo si no necesita invocar ningún compilador para crear el destino, por ejemplo porque su proyecto está escrito en un lenguaje interpretado. Nota: Este tipo de plantilla sólo está disponible para generadores basados en Makefile. En particular, no funcionará con los generadores vcxproj y Xcode. |
| subdirectorios | Makefile que contiene reglas para los subdirectorios especificados usando la variable SUBDIRS. Cada subdirectorio debe contener su propio archivo de proyecto. |
| vcapp | Archivo de proyecto de Visual Studio para construir una aplicación. |
| vclib | Archivo de proyecto de Visual Studio para crear una biblioteca. |
| vcsubdirs | Archivo de solución de Visual Studio para crear proyectos en subdirectorios. |
Consulte Construcción de tipos de proyectos comunes para obtener consejos sobre cómo escribir archivos de proyecto para proyectos que utilizan las plantillas app y lib.
Cuando se utiliza la plantilla subdirs, qmake genera un Makefile para examinar cada subdirectorio especificado, procesar cualquier archivo de proyecto que encuentre allí y ejecutar la herramienta make de la plataforma en el Makefile recién creado. La variable SUBDIRS se utiliza para contener una lista de todos los subdirectorios a procesar.
Configuración general
La variable CONFIG especifica las opciones y características con las que debe configurarse el proyecto.
El proyecto puede construirse en modo release, debug o ambos. Si se especifican tanto debug como release, tendrá efecto el último. Si especifica la opción debug_and_release para compilar tanto la versión de depuración como la de lanzamiento de un proyecto, el Makefile que genera qmake incluye una regla que compila ambas versiones. Esto puede ser invocado de la siguiente manera:
make all
Añadiendo la opción build_all a la variable CONFIG hace que esta regla sea la predeterminada al construir el proyecto.
Nota: Cada una de las opciones especificadas en la variable CONFIG también se puede utilizar como una condición de alcance. Puede comprobar la presencia de ciertas opciones de configuración utilizando la función incorporada CONFIG(). Por ejemplo, las siguientes líneas muestran la función como la condición en un ámbito para probar si sólo la opción opengl está en uso:
CONFIG(opengl) {
message(Building with OpenGL support.)
} else {
message(OpenGL support is not available.)
}Esto permite definir configuraciones diferentes para las compilaciones release y debug. Para obtener más información, consulte Uso de ámbitos.
Las siguientes opciones definen el tipo de proyecto a construir.
Nota: Algunas de estas opciones sólo tienen efecto cuando se utilizan en la plataforma correspondiente.
| Opción | Descripción |
|---|---|
| qt | El proyecto es una aplicación Qt y debe enlazarse con la librería Qt. Puede utilizar la variable QT para controlar cualquier módulo Qt adicional que requiera su aplicación. Este valor se añade por defecto, pero puede quitarlo para utilizar qmake para un proyecto no Qt. |
| x11 | El proyecto es una aplicación o librería X11. Este valor no es necesario si el objetivo utiliza Qt. |
Las plantillas de proyectos de aplicaciones y bibliotecas ofrecen opciones de configuración más especializadas para ajustar el proceso de compilación. Las opciones se explican en detalle en Construcción de tipos de proyectos comunes.
Por ejemplo, si su aplicación utiliza la biblioteca Qt y desea compilarla en modo debug, su archivo de proyecto contendrá la siguiente línea:
CONFIG += qt debug
Nota: Debe utilizar "+=", no "=", o qmake no podrá utilizar la configuración de Qt para determinar los ajustes necesarios para su proyecto.
Declarando Bibliotecas Qt
Si la variable CONFIG contiene el valor qt, se habilita el soporte de qmake para aplicaciones Qt. Esto hace que sea posible ajustar con precisión cuál de los módulos Qt son utilizados por su aplicación. Esto se logra con la variable QT que se puede utilizar para declarar los módulos de extensión necesarios. Por ejemplo, podemos habilitar los módulos XML y de red de la siguiente manera:
QT += network xml
Nota: QT incluye los módulos core y gui por defecto, por lo que la declaración anterior añade los módulos de red y XML a esta lista por defecto. La siguiente asignación omite los módulos por defecto, y provocará errores al compilar el código fuente de la aplicación:
QT = network xml # This will omit the core and gui modules.
Si desea compilar un proyecto sin el módulo gui, debe excluirlo con el operador "-=". Por defecto, QT contiene tanto core como gui, por lo que la siguiente línea resultará en la construcción de un proyecto Qt mínimo:
QT -= gui # Only the core module is used.
Para una lista de módulos Qt que puedes añadir a la variable QT, ver QT.
Características de configuración
qmake puede configurarse con características de configuración adicionales que se especifican en archivos de características (.prf). Estas características adicionales a menudo proporcionan soporte para herramientas personalizadas que se utilizan durante el proceso de construcción. Para añadir una función al proceso de compilación, añada el nombre de la función (la raíz del nombre del archivo de la función) a la variable CONFIG.
Por ejemplo, qmake puede configurar el proceso de compilación para aprovechar las bibliotecas externas compatibles con pkg-config, como las bibliotecas D-Bus y ogg, con las siguientes líneas:
CONFIG += link_pkgconfig PKGCONFIG += ogg dbus-1
Para obtener más información sobre la adición de funciones, consulte Adición de nuevas funciones de configuración.
Declaración de otras bibliotecas
Si utiliza otras bibliotecas en su proyecto además de las suministradas con Qt, deberá especificarlas en su archivo de proyecto.
Las rutas en las que qmake busca bibliotecas y las bibliotecas específicas con las que enlazar pueden añadirse a la lista de valores de la variable LIBS. Puede especificar las rutas a las bibliotecas o utilizar la notación de estilo Unix para especificar bibliotecas y rutas.
Por ejemplo, las siguientes líneas muestran cómo se puede especificar una biblioteca:
LIBS += -L/usr/local/lib -lmath
Las rutas que contienen ficheros de cabecera también pueden especificarse de forma similar utilizando la variable INCLUDEPATH.
Por ejemplo, para añadir varias rutas en las que buscar archivos de cabecera:
INCLUDEPATH = c:/msdev/include d:/stl/include
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.