Почему Qt использует свой собственный инструмент make, qmake?
Я только начал использовать Qt и заметил, что он использует свой собственный инструмент, qmake.
- почему Qt использует свой собственный инструмент make?
- есть ли что-то особенное, что мешает ему использовать стандартный инструмент make?
- вызывает ли qmake GCC компилятор C++?
5 ответов:
Qt использует qmake для прозрачной поддержки различных аддонов Qt, включая " moc, компилятор метаобъектов "(который предоставляет сигналы и слоты)," uic, компилятор пользовательского интерфейса " (который создает заголовочные файлы .файлы конструктора пользовательского интерфейса)," rcc, компилятор ресурсов " (который компилирует ресурсы).
ничто не мешает вам использовать любую систему сборки, которую вы хотите. тем не менее, это намного больше работы. Например, вам нужно запустить " moc " над каждым заголовочным файлом, содержащим класс, который имеет сигналы или слоты. В вообще это не рекомендуется, особенно для тех, кто только начинает использовать Qt.
QMake не вызывает g++/gcc напрямую. Вместо этого qmake создает собственные файлы make на текущей платформе. Под linux он создает стандартные файлы GNU make, под windows он может генерировать файлы Visual studio make, под Mac OS X он может генерировать файлы проекта XCode. Затем вы вызываете свою собственную систему сборки (либо GNU make, либо MS NMake, либо xcodebuild или что-то еще), которая вызовет ваш собственный компилятор (g++ / gcc или что-то еще).
на мой взгляд qmake-это круто для простых проектов (вы можете просто qmake-project; qmake; make), но ужасно и недостаточно документировано для крупных проектов. Особенно функциональность настройки qmake-это шутка.
лучшие системы сборки, которые я знаю,- это CMake и Waf (на основе Python). В моих собственных Qt-проектах я использую CMake для выполнения этой работы. Так же, как KDE-ребята:)
qmake конструировано для того чтобы быть перекрестной платформой и гибко. Он может быть совместим с Microsoft Visual Studio и Xcode.
вы можете найти все это в руководство qmake.
qmake генерирует Makefile на основе информация в файле проекта. Файлы проекта создаются разработчик, как правило, и прост, но более сложные файлы проекта могут создаваться для сложных проектов. для qmake содержит дополнительные особенности поддержка разработки с Qt, автоматическое включение правил построения для moc и uic. qmake также можете создание проектов для Microsoft Visual студия без необходимости разработчика чтобы изменить файл проекта.
для поддержки своей системы сигнал / слот Qt полагается на специальный препроцессор и компилятор, который генерирует промежуточные объекты, которые выполняют большую часть обработки. Они относятся к этому как мета-объектный компилятор или МПЦ.
посмотреть http://doc.trolltech.com/4.5/moc.html для сведения.
MOC (наряду с несколькими другими промежуточными инструментами) работает в сочетании с
qmake; который производит makefiles в вашем родном формате(VC++, g++ и др.), которые строят промежуточные файлы, созданные MOC, а также все ваши исходные файлы в окончательный исполняемый файл.
в целях
a) потому что это делает много за кулисами для вас
б) да, вижу)
c) да, он вызывает g++ (но может поддерживать другие компиляторы, если они у вас есть)
Comments