Подтвердить что ты не робот

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

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

  • Почему Qt использует собственный инструмент создания?
  • Есть ли что-то особенное, которое мешает ему использовать стандартный инструмент создания?
  • Может ли qmake вызвать GCC компилятор С++?
4b9b3361

Ответ 1

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

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

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

Ответ 2

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

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

Ответ 3

qmake предназначен для кросс-платформенности и гибкости. Он может совместим с Microsoft Visual Studio и Xcode.

Вы можете найти все это в qmake Manual.

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

Ответ 4

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

Подробнее см. http://doc.trolltech.com/4.5/moc.html.

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

Ответ 5

В порядке

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

b) да, см. а)

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