Почему Qt использует свой собственный инструмент создания, qmake?

StackOverflow https://stackoverflow.com/questions/1368534

  •  21-09-2019
  •  | 
  •  

Вопрос

Я только начал использовать Qt и заметил, что он использует свой собственный инструмент make, qmake ( создать ).

  • Почему Qt использует свой собственный инструмент make?
  • Есть ли что-то особенное, что мешает ему использовать стандартный инструмент make?
  • Вызывает ли qmake ССАГПЗ Компилятор C ++?
Это было полезно?

Решение

Qt использует qmake для прозрачной поддержки различных дополнений Qt, включая «moc, компилятор метаобъектов» (который предоставляет сигналы и слоты), «uic, компилятор пользовательского интерфейса» (который создает файлы заголовков из файлов дизайнера .ui), «rcc, компилятор ресурсов» (который компилирует ресурсы).

Ничто не мешает вам использовать любую систему сборки, которую вы хотите.однако это гораздо больше работы.Например, вам нужно запустить «moc» для каждого файла заголовка, содержащего класс, имеющий сигналы или слоты.В общем, это не рекомендуется, особенно тем, кто только начинает использовать Qt.

QMake не вызывает g++/gcc напрямую.Вместо этого qmake создает собственные файлы make на вашей текущей платформе.В Linux он создает стандартные файлы make GNU, в Windows он может создавать файлы make Visual Studio, в Mac OS X он может генерировать файлы проекта XCode.Затем вы вызываете свою собственную систему сборки (либо GNU make, либо MS NMake, либо xcodebuild или что-то еще), которая вызывает ваш собственный компилятор (g++/gcc или что-то еще).

Другие советы

По моему мнению, qmake хорош для простых проектов (вы можете просто qmake -project;qсделать;make), но он ужасен и недостаточно документирован для крупных проектов.Особенно функциональность qmake по настройке — это шутка.

Лучшие системы сборки, которые я знаю, — это CMake и Waf (на основе Python).В своих собственных Qt-проектах я использую CMake для выполнения этой работы.Прямо как ребята из KDE :)

Для поддержки своей системы сигналов/слотов Qt использует специальный препроцессор и компилятор, который генерирует промежуточные объекты, выполняющие большую часть обработки.Они называют это Компилятор метаобъектов или МОЦ.

Видеть Документация Qt 5:Использование компилятора метаобъектов для получения подробной информации.

MOC (вместе с парой других промежуточных инструментов) работает совместно с qmake;инструмент автоматизации сборки, который создает файлы Makefile в вашем родном формате (VC++, g++ и т. д.), которые объединяют промежуточные файлы, сгенерированные MOC, а также все ваши исходные файлы в окончательный исполняемый файл.

qmake ( создать ) разработан таким образом, чтобы быть кроссплатформенным и гибким.Он может быть совместим с Microsoft Visual Studio и Xcode.

Вы можете найти все это в руководство по qmake.

qmake генерирует Makefile на основе информации в файле проекта.Файлы проекта создаются разработчиком и обычно являются простыми, но для сложных проектов могут быть созданы более сложные файлы проекта .qmake содержит дополнительные функции для поддержки разработки с использованием Qt, автоматически включая правила сборки для moc и uic.qmake также может создавать проекты для Microsoft Visual studio, не требуя от разработчика изменения файла проекта.

Чтобы

а) потому что это многое делает для вас за кулисами

б) да, см. а)

в) да, он вызывает g++ (но может поддерживать другие компиляторы, если они у вас есть)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top