Конфигурация проекта и файл .pro

Последнее обновление: 03.01.2023

При создании в Qt Creator проекта, который использует систему построения qmake, среда разработки автоматически создает файл конфигурации с расширением .pro.

Файл конфигурации проекта .pro для системы построения qmake в Qt Creator

Файл .pro содержит всю информацию, необходимую qmake для создания приложения, библиотеки или плагина. В частности, файл проекта содержит ряд объявлений для указания ресурсов, таких как ссылки на исходные файлы и файлы заголовков, библиотеки, необходимые проекту и т.д.

Файл проекта Qt имеет несколько разделов и использует определенные предопределенные переменные qmake. Например, типичное содержание .pro-файла:

QT += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

CONFIG += c++17

# You can make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

SOURCES += \
    main.cpp \
    mainwindow.cpp

HEADERS += \
    mainwindow.h

FORMS += \
    mainwindow.ui

# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

Наиболее часто используемые в файле переменные:

  • QT: список модулей Qt, которые применяются в проекте

  • CONFIG: общие конфигурационные настройки проекте

  • DESTDIR: каталог, в который будут помещаться скомпилированные бинарные файлы

  • FORMS: список файлов с определением пользовательского интерфейса (UI-файлов), которые обрабатываются UI-компилятором (uic)

  • HEADERS: список заголовочных файлов (.h), применяемых при построении проекта

  • RESOURCES: список файлов ресурсов (.qrc), которые включены в проект

  • SOURCES: список файлов с исходным кодом (.cpp), используемых при построении проекта

  • TEMPLATE: определяет тип проекта - будет ли при сборке проекта создавать исполняемое приложение, библиотека или плагин.

Чтобы добавить дополнительные модули, после выражения QT += добавляется имя модуля

QT += core gui sql

Добавляемые модули отделяются друг от друга пробелом. Так, в данном случае добавляется три модуля.

Также перед добавление модуля можно указать условие, когда добавлять конкретный модуль в проект, например:

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

Также можно добавить в проект настройки конфигурации с помощью переменной CONFIG. Например, если надо указать, что при компиляции проекта применяется стандарт C++17, то в файл .pro добавляется следующая строка:

CONFIG += c++17

Аналогично для применения стандарта C++20 применяется выражение

CONFIG += c++20

Переменная TEMPLATE определяет тип проекта - будет ли при сборке проекта создавать исполняемое приложение, библиотека или плагин. Существуют различные переменные, которые позволяют определить тип файла, который будет генерировать qmake. Основные из них:

  • app: используется для создания приложения.

  • lib: используется для создания библиотеки.

Например, компиляция проекта в качестве библиотеки:

TEMPLATE = lib

Чтобы определить иконку приложения на Windows, можно добавить в файл .pro следующую строку:

RC_ICONS = myapplication.ico

Для установки иконки для macOS добавляется следующая строка:

ICON = myapplication.icns

Для Linux способ добавления зависит от конкретного дистрибутива.

При определении файла в него можно добавить комментарии, которые должны начинаться с символа решетки (#). При сборке проекта система сборки проигнорирует соответствующие строки.

Платформозависимые настройки

Файл .pro позволяет определить разные конфигурации для разных платформ, поскольку не каждая конфигурация подходит для всех случаев использования. Например, если надо включить разные пути заголовков для разных операционных систем, то можно добавить в файл .pro следующие строки кода:

win32: INCLUDEPATH += "C:/somefolder/windows_headers"
unix:INCLUDEPATH += "/home/user/linux_headers"

В данном фрагменте кода параметр INCLUDEPATH указывает на добавляемые пути заголовочных файлов. Опция win32 задает настройки для Windows, а unix - для Linux.

Также можно определить блок конфигураций для определенной системы, например, добавим для Windows дополнительные исходные файлы:

win32 {
 SOURCES += windows_code.cpp
}
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850