Что такое qmake для windows

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

Опции командной строки

Синтаксис

Синтаксис, используемый для запуска qmake, имеет следующую простую форму:

qmake поддерживает два разных режима управления: по умолчанию, qmake будет использовать описание в файле проекта для создания файлов сборки, но так же возможно использование qmake для создания файлов проекта. Если вы хотите явно установить режим, вы должны определить это раньше, чем остальные опции. Значение режима может быть одним из следующих:

  • -makefile
    выходной файл qmake будет файлом сборки.
  • -project
    выходной файл qmake будет файлом проекта.

Следующие опции используются для определения как общих, так и настроек, зависящих от режима. Опции, которые применяются для режима файла сборки, описаны в разделе Опции режима файла сборки; опции, которые влияют на создание файлов проекта, описаны в разделе Опции файла проекта.

Аргумент files представляет собой список из одного или более файлов проектов, разделенных пробелами.

Параметры

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

  • -help
    qmake пропустит эти свойства и предоставит некоторую полезную информацию.
  • -o file
    Выходную информацию qmake запишет в file. Если это опция не определена, qmake будет пытаться использовать подходящее имя файла для выходной информации, в зависимости от режима, в котором он запущен.
    Если указан ‘-‘, выходная информация записывается в stdout.
  • -d
    qmake будет выводить отладочную информацию.

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

  • -unix
    qmake будет запущен в режиме unix. В этом режиме будет использовано соглашение о Unix именах файлов и каталогов, кроме того, будет успешно выполнена проверка для unix (как области видимости). Это является режимом по умолчанию для всех *nix.
  • -macx
    qmake будет запущен в режиме Mac OS X. В этом режиме будет использовано соглашение Unix об именах файлов и каталогов, кроме того, будет успешно выполнена проверка для macx (как области видимости). Это является режимом по умолчанию для всех Mac OS X.
  • -win32
    qmake будет запущен в режиме win32. В этом режиме будет использовано соглашение Windows об именах файлов и каталогов, кроме того, будет успешно выполнена проверка для win32 (как области видимости). Это является режимом по умолчанию для Windows .

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

  • -t tmpl
    qmake аннулирует любые присвоения переменной TEMPLATE с tmpl, но только после того, как .pro файл будет обработан.
  • -tp prefix
    qmake добавит префикс к переменной TEMPLATE.

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

  • -Wall
    qmake выведет все известные предупреждения.
  • -Wnone
    Никаких предупреждений не будет создано qmake.
  • -Wparser
    qmake выдаст только ошибки синтаксиса. Это будет предупреждать вас об общих подводных камнях и потенциальных проблемах в синтаксисе вашего файла проекта.
  • -Wlogic
    qmake будет предупреждать об общих подводных камнях и потенциальных проблемах в вашем файле проекта. Например, qmake будет сообщать, помещен ли файл в список файлов несколько раз, либо, если файл не найден.

Опции режима файла сборки

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

  • -after
    qmake будет обрабатывать присвоения, данные в командной строке, после определения файлов.
  • -nocache
    qmake будет игнорировать файл .qmake.cache.
  • -nodepend
    qmake не будет создавать какую-либо информацию о зависимостях.
  • -cache file
    qmake будет использовать file в качестве файла кэша, игнорируя любые другие найденные .qmake.cache файлы.
  • -spec spec
    qmake будет использовать spec, как путь к информации о платформе и компиляторе, и значение переменной QMAKESPEC будет проигнорировано.

Также вы можете опустить присвоения для qmake в командной строке; они будут обработаны перед тем, как все файлы будут определены. Например:

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

Если вы точны и захотите обрабатывать ваши переменных после определения файлов, то вы можете пропустить опцию -after. Если это определено, то все присвоения в командной строке после опции -after будут отложены до тех пор, пока указанные файлы не будут проанализированы.

Опции режима проекта

В режиме проекта qmake создает файл проекта. Кроме того в этом режиме вы можете указать следующие опции:

  • -r
    qmake будет просматривать поставляемые каталоги рекурсивно
  • -nopwd
    qmake не будет просматривать текущий рабочий каталог для исходного кода и будет использовать только указанные файлы files
Читайте также:  Реестр версия windows значения

В этом режиме аргумент files может быть списком файлов или каталогов. Если каталог определен, он будет включен в переменную DEPENDPATH, и соответствующий код из него будет включен в созданный файл проекта. Если файл указан, он будет прикреплен к соответствующей переменной, в зависимости от его расширения, например, .ui файлы добавляются к переменной FORMS, а .cpp файлы добавляются к переменной SOURCES.

Также в этом режиме вы можете пропустить присвоения в командной строке. Если вы так сделаете, то эти присвоения будут помещены в созданный файл проекта последними.

Это пособие научит вас пользоваться qmake. Мы рекомендуем прочитать руководство пользователя по qmake после завершения изучения этого материала.

Начать легко

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

Вы найдете эти файлы в каталоге examples/qmake/tutorial дистрибутива Qt. Единственная вещь, которую вы знаете об установке приложения, — это то, что оно написано на Qt. Во-первых, используя текстовый редактор, создайте файл с названием hello.pro в каталоге examples/qmake/tutorial. Первое, что вам необходимо сделать, — это добавить строки, которые сообщат qmake о файле с исходным кодом и заголовочном файле, являющихся частью разрабатываемого проекта.

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

Мы повторяем эти действия для каждого файла с исходным кодом в проекте до тех пор, пока не получим следующее:

Если вы предпочитаете использовать make-синтаксис, перечисляя все файлы за один шаг, вы можете использовать экранирование новой строки как показано здесь:

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

Как только вы сделаете это, ваш файл проекта должен выглядеть так:

Конечное имя устанавливается автоматически; оно такое же, как и имя файла проекта, но с суффиксом, соответствующим платформе. Например, если файл проекта называется — hello.pro, целевым именем будет hello.exe для Windows и hello — для Unix. Если вы хотите использовать другое имя, вы можете установить его в файле проекта:

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

Законченный файл проекта должен выглядеть так:

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

Затем напишите make или nmake, в зависимости от компилятора, который вы используете.

Для пользователей Visual Studio, qmake также может создавать файлы .dsp или .vcproj, например:

Отладка приложения

Версия релиза приложения не может содержать какие-либо символы трассировки или другую отладочную информацию. Но во время разработки полезно создавать отладочную версию приложения, в которой содержится вышеозначенная информация. Этого легко добиться, добавив debug в переменную CONFIG в файле проекта.

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

Добавление платформо-зависимых исходных файлов

Возможно, после нескольких часов программирования, вы захотите сделать часть вашего приложения ориентированным на определенную платформу и решите отделить код, зависимый от платформы. Итак, теперь у вас есть 2 новых файла, которые нужно включить в ваш файл проекта:hellowin.cpp и hellounix.cpp. Мы не можем просто добавить их в переменную SOURCES, так как оба файла будут помещены в файл сборки. Поэтому нам нужно использовать область видимости (scope), которая будет обрабатываться в зависимости от того, на какой платформе выполняется qmake.

Простая область видимости (scope), которая будет добавлена в файл, зависимый от платформы Windows, будет выглядеть так:

Итак, если qmake запущен для Windows, он добавит hellowin.cpp в список исходных файлов. Если qmake запущен для любой другой платформы, он просто будет игнорировать эти строки. Теперь всё, что осталось сделать, — это создать область видимости для файла, определенного для Unix.

Когда вы это сделаете, ваш файл проекта должен выглядеть так:

Используйте qmake как и раньше для создания файла сборки.

Остановка qmake в случае отсутствия файла

Вам может понадобится не создавать Makefile, если определенный файл отсутствует. Используя функцию exists(), мы можем проверить, существует ли файл. С помощью функции error(), можно остановить выполнение qmake. Это работает точно так же, как и область действия (scopes do). Просто замените условие области видимости на функцию. Проверка для файла main.cpp выглядит так:

Символ ! используется для отрицания результата; например, exists( main.cpp ) — истина, если файл существует, и !exists( main.cpp ) — истина, если файл не существует.

Используйте qmake как и раньше для создания файла сборки. Если вы временно переименуете main.cpp, вы увидите сообщение, и выполнение qmake остановится.

Проверка нескольких условий

Предположим, вы пользуетесь Windows и хотите видеть информацию с помощью qDebug() во время запуска приложения в командной строке. До тех пор, пока вы не выполните приложение с соответствующими настройками консоли, вы не увидите выходную информацию. Можно просто написать console в строке CONFIG, и файл сборки под Windows будет иметь эти настройки. Тем не менее, скажем что мы хотим добавить строку CONFIG, только если мы запускаем под Windows и когда debug уже прописан в строке CONFIG. Эти требования используют две вложенные области видимости; просто создайте одну область видимости, затем создайте вторую внутри первой. Поместите код так, чтобы он выполнялся внутри последней области видимости, как здесь:

Читайте также:  Minix neo x8 h plus windows

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

Совершенно верно! Только что вы закончили изучать пособие по qmake и готовы к написанию файлов проектов для разрабатываемых проектов.

KNZSOFT Разработка ПО, консультации, учебные материалы

Князев Алексей Александрович. Независимый программист и консультант.

Установка бесплатных средств разработки для C++ под Windows. Qt(QMake/CMake) + MinGW

Дата написания статьи: 2014-08-11
Дата последней правки: 2014-08-13

Введение

Установка средств разработки Qt на Windows может сопровождаться рядом сложностей, которые могут оказаться непреодолимыми для новичков, не знающих некоторые особенности использования Qt и тех средств инсталляции, которые можно найти на различных ресурсах Интернет.

Прежде всего, следует знать, что, для разных платформ, Qt распространяется на основе разных лицензий. Под Windows, на текущий момент, предлагаются как платная, так и бесплатная лицензия. После того, как компания Nokia продала в компанию Digia права на разработку платформы Qt (компания Nokia занималась разработкой Qt с 2008 по 2012 годы), бесплатная ветка Qt существенно обособилась и стала выставляться с отдельного ресурса. Сейчас, с целью предоставления клиентам наиболее полной информации о различных вариантах использования продукта, планируется объединение ресурсов, предоставляющих платные и бесплатные средства Qt. Кроме того, планируется объединение средств инсталляции для пакетов с разными лицензиями. Выпуск первого такого инсталлятора планируется на сентябрь 2014 года.

Все нововведения будут относиться к версии Qt5, в то время как версия Qt4 уже давно не интересует производителей и именно с ней, для некомерческих предложений, и существует ряд проблем установки под Windows.

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

  1. Qt SDK — заголовочные файлы, динамические библиотеки, утилиты — все, что необходимо для сборки традиционных Qt-проектов, исключая сам компилятор.
  2. Источники Qt SDK. Как правило, источники содержали более полный набор элементов Qt SDK, которые можно было опционально скомпилировать.
  3. Среда разработки QtCreator. На сегодняшний день, данная бесплатная среда разработки является, на мой взгляд, лучшим выбором при разработке проектов на языке C/C++.
  4. Средства MinGW (Minimalist GNU for Windows). Включают в себя GNU компилятор для C++, утилиту сборки GNU make и прочий набор инструментов, необходимых для компиляции проектов с некоторого набора языков, включающих в себя языки C/C++.

К сожалению, не всегда в обозначение инсталлятора входят содержащиеся в нем средства. Именно это может смутить новичков, особенно, при невнимательном использовании инсталлятора. Обозначенные в инсталляторе средства могут указывать на его зависимость от этих средств. Так, например, если у инсталлятора стоит пометка (VS 2010), то многим понятно, что в этом инсталляторе содержатся средства для разработки в связке с Microsoft Visual Studio 2010, которая должна быть предварительно установлена. Однако, если у инсталлятора стоит пометка (MinGW 4.8.2), то, так как инструментарий MinGW распространяется свободно, то не очевидно, содержится в этом инсталляторе MinGW или нет. И действительно, есть инсталляторы, которые содержат и которые не содержат внутри себя MinGW. В последних, на одной из страниц визарда, может стоять ссылка на скачивание и установку MinGW, которая может оказаться устаревшей. Так, если зайти на оригинальный ресурс, Qt-Project, где официально предлагается для скачивания Qt4 SDK с бесплатной лицензией, то мы столкнемся с отсутствием средств MinGW в соответствующем инстялляторе для версии Qt4. Фактически, с официального ресурса мы установим нерабочие средства разработки, если сами не доработаем их до требуемого состояния.

Системы сборки QMake и CMake

Традиционно, проекты Qt поддерживаются нативной системой сборки QMake, которая поставляется со всеми дистрибутивами, однако, из-за ряда проблем, связанных с использованием QMake, разработчики, работающие с Qt, все чаще используют систему сборки CMake, которая не содержит проблем QMake и формирует информативную сборку (с отображением процента исполнения), что очень удобно для больших проектов, сборка которых может занять значительное время (особенно при сборке на виртуальных компьютерах).

Инструменты компиляции — MinGW и средства от Microsoft

Система фреймворков и библиотек классов Qt поддерживает две системы компиляции:

  1. Инструменты из коллекции компиляторов GNU и GNU Binutils
  2. Инструменты компиляции для языка C++ от Microsoft

Средства разработки GNU для платформы Windows, можно получить в пакете, который называется MinGW (Minimalist GNU for Windows). Сегодня, согласно оригинальному ресурсу предоставляющему MinGW, в пакет входят следующие портированные компоненты.

  1. Коллекция компиляторов GNU Compiler Collection (GCC), включая компиляторы с языков C, C++, Objective-C, ADA и Fortran.
  2. Утилиты GNU Binutils для Windows (ассемблер, линковщик, менеджер архивов).
  3. Инструментальные утилиты, упрощающие работу с командной строкой — MSYS.
  4. Инсталлятор, в виде графического менеджера, управляющего составом установленных инструментов.

Использование средств разработки от Microsoft для проектов Qt, предполагает установленную среду разработки Microsoft Visual Studio со средствами компиляции с языка C++. Если нет специального требования на использование компиляторов Microsoft, то удобно будет воспользоваться бесплатными средствами разработки. При выборе инсталлятора средств разработки Qt, обратите внимание на тип компилятора, для которого они предназначены.

Добавление путей к системной переменной PATH

При выполнении установки требуемых средств разработки, указанных ниже, может понадобиться добавление путей на директории установки этих средств к значению системной переменной PATH. Это можно выполнить следующим образом.

  1. Нажмите комбинацию клавиш Windows+Pause. Откроется окно «Панель управления->Система и безопасность->Система».
  2. В панели слева выберите пункт «Дополнительные параметры системы». Откроется окно «Свойства системы». На вкладке «Дополнительно», внизу, щелкните кнопку «Переменные среды». В открывшемся окне, в группе «Системные переменные» выберите системную переменную PATH и щелкните по кнопке «Изменить».
  3. Значение системной переменной PATH состоит из списка путей разделенных знаком точка с запятой. Чтобы добавить нужный путь, вставьте в конец списка символ точки с запятой и запишите после него требуемый путь.
  4. Закройте все окна панели управления и перегрузите приложения, которые должны получить обновленные записи путей.

Последовательность шагов

Использование данного инсталлятора отличается простотой, в том плане, что не требуется пользовательская установка со сложным выбором средств, которые требуются для конечной работы. К сожалению, устанавливая Qt для Windows я сталкивался с инсталляторами, которые содержат ошибки в зависимостях установки опций, и которые решаются установкой совершенно нелогичных флажков). В данной версии инсталлятора следует заметить только одну особенность. Он не содержит в себе MinGW в явном виде, и, вместо этого, на последней странице, перед запуском установки, сообщает о том, что для его работы нужен установленный MinGW и просит указать директорию его установки. Также, он предлагает ссылку, по которой можно попробовать установить MinGW, но, с учетом того, что инсталлятор Qt4 уже довольно старинный артефакт, а ссылки на ресурсы Интернет, могут меняться, то лучше подготовить установку MinGW предварительно, как мы и сделали на предыдущем шаге.

Читайте также:  Windows 10 драйвер тач

Если мы будем использовать сборку из командной строки, не используя средств разработки, то следует добавить путь на QtSDK в системную переменную PATH. Так же, это может потребоваться для работы CMake при наличии нескольких установленных версий Qt SDK. При наличии нескольких установленных версий Qt SDK в системных путях должен быть путь только на одну из версий — таким образом можно будет выполнять переключение используемых версий вне возможностей сред разработки, которые под каждую настроенную сборку автоматически формируют набор переменных окружения с требуемыми значениями.

Каждая из установок Qt SDK характеризуется &quuot;своим» экземпляром утилиты qmake.exe. Именно она знает где лежит все то, что необходимо для сборки проекта под данную версию Qt. Поэтому, путь на Qt SDK характеризуется путем на размещение ее экземпляра qmake.exe. В моем случае, это был путь C:\Qt\4.8.6\bin.

Проверка установленных инструментов

Создайте отдельную директорию. Например, директорию test. В этой директории создайте файл main.cpp со следующим содержимым.

Это код простейшей бесполезной оконной программы на Qt. После компиляции этого кода мы получим приложение, представляющееся на экране пустым окном с системными кнопками — свернуть, развернуть и закрыть.

Далее, продемонстрируем сборку данной программы средствами QMake и CMake. Пример является минимальным и совершенно корректным с точки зрения Qt4, поэтому любая ошибка в его сборке, фактически будет указывать на отсутствие того или иного инструмента. Чаще всего это будет означать отсутствие путей на инструмент или неправильную запись этого пути. Так же помните, что после редактирования системной переменной PATH требуется перезапустить приложение, в котором вы собираетесь использовать изменение значения системной переменной. Именно при запуске приложения формируется его окружение (environment) из текущих значений всех системных переменных операционной системы. Исключение из такого поведения я встречал только в Mac OS X.

Сборка с использованием QMake

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

Откройте в директории нашего простейшего проекта консоль и выполните следующий набор команд. Знак ‘>’ является знаком приглашения к вводу команд в консоли Windows.

Команда «qmake -project» выполненная в директории с файлами проекта выполняет анализ файлов источников и на их основе формирует проектный файл для системы сборки QMake. Файл проекта QMake имеет расширение «pro». Имя файла будет совпадать с именем директории проекта. В нашем случае, это будет файл test.pro.

Следующая команда «qmake» выполняет формирование сценария сборки для утилиты «make» на основе проектного файла, созданного предыдущей командой. После ее выполнения будет сформирован файл сценария «Makefile».

Далее, команда «mingw32-make», выполняет созданный на предыдущем шаге сценарий из файла «Makefile». Результатом выполнения созданного сценария будет исполняемый файл test.exe созданный в поддиректории debug. При запуске данного файла должно будет открыться пустое окно приложения.

Сборка с использованием CMake

Система сборки CMake, к сожалению, не является такой автоматизированной, как QMake, но обладает, тем не менее, рядом преимуществ.

Проектный файл системы CMake для любого проекта носит фиксированное название CMakeLists.txt. Для нашего простого проекта его придется писать самому. Создайте в директории с файлом main.cpp файл CMakeLists.txt и заполните его следующим содержимым. Строки, начинающиеся со знака решетки (комментарии) можно не писать.

Чтобы не засорять текущую директорию множественными файлами с побочными продуктами компиляции, создадим отдельную директорию build для выполнения компиляции. Директория build должна содержаться в той же директории, что и файл проекта CMakeLists.txt. Зайдем в созданную директорию build и выполним в ней следующую команду cmake.

Ключ -G используется для указания генератора, который должен быть использован для создания сценария сборки. CMake поддерживает большое количество разных генераторов, которые могут быть использованы для создания сценариев сборки под различные известные среды разработки на разных платформах. В том числе, C++ Builder, MS Visual Studio, Eclipse и пр. По умолчанию, для разных платформ предлагаются разные генераторы. Если запустить cmake под *nix, то генератором по-умолчанию будет генератор с именем «Unix Makefiles», который формирует сценарий сборки для утилиты GNU make. Если запустить cmake.exe под Windows, то генератором по-умолчанию будет генератор «NMake Makefiles», формирующий сценарий сборки под утилиту nmake, входящей в состав инструментов сборки от Microsoft. Так как нам нужно создать сценарий сборки под средства, предоставляемые системой MinGW, то необходимо указать соответствующий генератор.

Следующим параметром запуска утилиты, является параметр, обозначаемый в виде двух точек. Этот значок является синонимом родительской директории, пришедшей в современный Windows из *nix через DOS. В утилиту cmake.exe следует передать директорию с файлом проекта, а в нашем случае, для сборки в директории build, такой директорией будет родительская директория.

В результате выполнения этой команды будет создан файл сценария Makefile, который, как и в случае с использованием QMake, можно будет выполнить командой mingw32-make.

Установка Qt под Windows при использовании MinGW (QMake/CMake) : Один комментарий

Добавить комментарий Отменить ответ

Для отправки комментария вам необходимо авторизоваться.

Оцените статью