Каталог статей

Главная » Статьи » Мои статьи

Qmake
qmake- это утилита от Trolltech, которая помогает облегчить процесс сборки приложения на разных платформах. qmake – автоматические генерирует мейк-файлы основываясь на информации в файлах проекта(*.pro). Эта программа распространяется вместе со всем комплектом Qt.


Краткое руководство

Допустим вы сделали ваше приложение, состоящие из следующих файлов:
hello.cpp
hello.h
main.cpp

Дальше вам нужно создать файл с расширением .pro, пусть это будет “hello.pro”. Pro-файлы представляют из себя текстовые файлы в которых описаны инструкции необходимые для сборки приложения. Первое что нам нужно сделать, добавить строчку, которая скажет qmake о файлах исходного кода вашей программы. Для добавления cpp-файла необходимо использовать переменную SOURCES. Просто напишите строчку с текстом “SOURCES += hello.cpp”, таким образов вы добавите в проект файл hello.cpp. Это нужно сделать для каждого файла в проекте:

SOURCES += hello.cpp
SOURCES += main.cpp

или так:

SOURCES = hello.cpp \
  main.cpp


Теперь когда файлы реализации добавлены, нужно добавить файлы заголовков. Делается похожим образом, только с помощью переменной HEADERS. В итоге в файле проекта будет следующее:

HEADERS += hello.h
SOURCES += hello.cpp
SOURCES += main.cpp

Имя и суффикс скомпилированного файла выберется автоматически, в зависимости от платформы. Если файл называется hello.pro, результатом будет hello.exe на Windows и hello в Unix. При желании задать конкретное имя, используйте переменную TARGET:
TARGET = helloworld

В завершение необходимо установить переменную CONFIG. Так как это Qt приложение, то необходимо что бы были подключены qt библиотеки и так же сгенерированы строчки для moc и uic компиляторов.

В результате файл примет вид:
CONFIG += qt
HEADERS += hello.h
SOURCES += hello.cpp
SOURCES += main.cpp

Теперь может воспользоваться qmake для генерации Makefile. Это делается вызовом в командной строке, в паке проекта следующей команды:
qmake -o Makefile hello.pro 

Результатом выполнения будет появление Makefile в папке проекта, теперь воспользовавшись make-утилитой можете собрать проект.

Для добавления отладочной информации в бинарный файл, можно использовать следующее:

CONFIG += qt debug

В процессе разработки может случится так, что вы напишите платформенно зависимый код в двух файлах hellowin.cpp и hellounix.cpp, конечно можно добавить оба фала, но нам необходимо, что бы в зависимости от платформы qmake выбирал какой из них добавлять. Для этого используется платформенно зависимые секции. Для платформы Windows это будет выглядеть так:

win32 {
  SOURCES += hellowin.cpp
}

Теперь если qmake запущен под Windows, он будет учитывать этот блок, а если на другой платформе, то просто проигнорирует. Такой вид примет файл написанный под две платформы:
CONFIG += qt debug
HEADERS += hello.h
SOURCES += hello.cpp
SOURCES += main.cpp

win32{
  SOURCES += hellowin.cpp
}
unix{
  SOURCES += hellounix.cpp
}

Можно прервать генерацию Makefile, если какого фала не хватает. Проверить наличие файла можно с помощью функции exists(), а прервать выполнение qmake используя error().

Например так:

!exists( main.cpp ) {
  error( "No main.cpp file found" )
}
Категория: Мои статьи | Добавил: qt-boy (25.05.2009)
Просмотров: 1535 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Имя *:
Email *:
Код *:
Форма входа
3D Облако
Мини-чат
Категории раздела
Мои статьи [19]
Облако
About Qt Qtractor 0.4.2 QListView Сравнение MFC и Qt git-репозиторий Qt Жасмин Бланшет QFileDialog QtCreator 1.1 Qt Extended Qt Solutions Динамическое приведение QObject Пишем собственный веб броузер Установка иконки приложения на плат QMessageBox Добавление информации о версии в .e Сохранение отзывчивости графическог Вышли бета-версии библиотеки Qt 4.7 Указание кодировки строк в исходном qt quick QT qt sdk QInputDialog Singleton для Qt Стандартные алгоритмы для работы с QColorDialog Примеры использования класса QEvent QFontDialog Анимация в QLabel gif Открытие ссылки в браузере установл QMap итератор Помещаем окно посередине экрана Выставляем флаги для окон Отловить нажатие клавиши на QLabel Определить какой именно контрол был Сделать окно модальным Зашифровать данные в MD5 или MD4 Удаление из QlistWidget строки Написание DLL на С++ работа с реестром Ограничение на ввод определенного к QMessageBox подтверждение удаления Многопоточный сервер на примере Чат Текстовый кодек Отправляем файл на PHP скрипт Пример пересылки от клиента к серве но если не важна скорость то сойдет Вставка текста из буфера обмена(при Удаление повторяющихся элементов в Проверить существует ли файл Распечатка текста из QTextEdit Вывести текст из QTextEdit в диалог Отловить событие закрытие окна Устанавливаем иконку для окна Проверка веб ссылки на валидность Функция центрирования окна по серед Функция проверки обновления для про Преобразовать QString в char* Выдрать IP и порт из строки Получение списка всех файлов в дире Окно поверх всех Ввод пароля в QLineEdit Ввод в QLineEdit только цифр и точк Сортировка QListWidget Скачать файл по Ftp Пример использования оператора fore Получить список папок Кодирование/Декодирвоание Base64 Получить переменные среды Оставить у диалога только кнопку за Запуск сторонней программы из Qt ис Сохранение настроек приложения в ре Экран заставка SplashScreen Drop Добавление эффекта выделяющего прям Получение информации о свободном пр Запись структуры(пользовательского Функция Sleep Простой пример использования QProce Как унаследоваться от QObject Отрисовать виджет по форме картинки Перемещение виджета вслед за мышкой Сделать диалог поверх всех окон/поз Повернуть изображение QSignalMapper - как пользоваться Qt приведение типа QFileSystemWatcher следим за директ Добавление сигнала clicked() в QLab Удаление директории с поддиректория Рекурсивный поиск файлов и папок QWheelEvent определить направление Отловить завершение работы системы Валидация на ввод только цифр Центрирование виджета посередине ро styleSheet QLabel красим текст под styleSheet QLabel простой пример styleSheet QTableWidget красим QTab QTableWidgetItem текст по центу Проверка сокета Выход из вложенных циклов
Наш опрос
Оцените мой сайт
Всего ответов: 93
Поиск
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Статистика

    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0