Qt+CodeBlocks |
Здравствуйте, гость ( Вход | Регистрация )
Qt+CodeBlocks |
Fedcomp |
23.10.2010, 20:51
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 5 Регистрация: 23.10.2010 Пользователь №: 2146 Спасибо сказали: 0 раз(а) Репутация: 0 |
Всем привет.
Хочу чтобы CodeBlocks на автомате (по клавише F9 т.е компиляция) проходился по полному циклу qmake и потом компиляция через mingw. Но возникло много трудностей. Во первых я новичок, процессы компиляции понимаю крайне плохо (лишь знаю что в .o файлах компилируется код, затем линкером объединяется в экзешник, ну ещё что то слышал про makefile, но не знаю как они работают, и знаю что Qt использует moc для того чтобы добавить к C++ упрощенный вид функций (т.е препроцессор moc делает б0льшую работу за программиста, собственно превращая псевдо slots и signals в настоящий код понятный компилятору)) Во вторых не понятен способ ручной компиляции Qt проектов. В Qt designer сборка проходит абсолютно прозрачно, как и что он в это время делает не понятно. Пробовал порыться в гугле, нашел qmake -project (рекурсивно проходится по текущему каталогу и составляет qt проект) и qmake "имя_проекта.pro" который проходится moc'ом как я понял. Так вот такая задача, хочу чтобы CodeBlocks автоматически запускал qmake перед компиляцией, это возможно? |
|
|
Kagami |
23.10.2010, 21:07
Сообщение
#2
|
Старейший участник Группа: Участник Сообщений: 601 Регистрация: 2.2.2009 Пользователь №: 523 Спасибо сказали: 101 раз(а) Репутация: 9 |
Когда я пару лет назад работал в Code::Blocks, то для работы с Qt я использовал плагин QtWorkbench. Впрочем он был не совсем удобен, и насколько я могу судить он не очень активно развивается. После выхода первой версии Qt Сreator я перешел на него и не жалею. Рекомендую на него посмотреть
|
|
|
Litkevich Yuriy |
23.10.2010, 22:05
Сообщение
#3
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
В Qt designer сборка проходит абсолютно прозрачно, как и что он в это время делает не понятно. В дизайнере сборка вообще не происходит. Это всего лишь инструмент для визуального создания виджетов/оконВо вторых не понятен способ ручной компиляции Qt проектов. 1) qmake myproject.pro 2) make ... N) make 1 - программа qmake создаёт make-файлы на основе pro-файла 2 - программа make читает make-файлы и исполняет инструкции записанные в них, в отличие от bat/shell-файлов логика обработки make-файлов специфичная, т.к. позволяет отслеживать зависимости команд (например, нужно ли перекомпилировать такой-то файл или он не изменялся со времени последней компиляции) N - тоже что и №2, так как в make-файле есть цель в виде pro-файла. Т.е. если pro-файл изменился, программа make это заметит и вызовит qmake автоматически. П.С. 1) иногда всё таки приходится повторно вызывать qmake явно (руками), это когда, например, класс наследник QObject сначала не содержал макрос Q_OBJECT, а потом этот макрос появился. 2) moc вручную не вызывают, программа qmake записывает соответствующий вызов в make-файл |
|
|
Fedcomp |
24.10.2010, 11:38
Сообщение
#4
|
Новичок Группа: Новичок Сообщений: 5 Регистрация: 23.10.2010 Пользователь №: 2146 Спасибо сказали: 0 раз(а) Репутация: 0 |
Т.е достаточно сделать Makefile с помощью QT и заставить кодеблоки юзать этот мейкфайл?
и при этом qmake при необходимости будет запускаться сам, я правильно все понял? Делаю так, cmd.exe=>
Появляются мейк файлы (Makefile, Makefile.release, Makefile.debug) Дальше захожу в CodeBlocks, запускаю проект и в свойствах проекта нажимаю "This is custom makefile" нажимаю ок. Жму F9 (т.е компиляцию и запуск) Получаю It seems that this project has no been built yet. Do you want to build it now? (что нормально, т.е кодеблок хочет его компильнуть) Нажимаю yes и получаю
Смотрю в makefile и вижу
И много подобных строк. Как я понял компилятор не знает что делать с FORCE Что я сделал не так? |
|
|
Litkevich Yuriy |
24.10.2010, 12:03
Сообщение
#5
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Т.е достаточно сделать Makefile с помощью QT и заставить кодеблоки юзать этот мейкфайл? да.и при этом qmake при необходимости будет запускаться сам, я правильно все понял? Как я понял компилятор не знает что делать с FORCE не компилятор а программа makeЯ не знаю, что делает CodeBlocks, нужно просто скомандовать make - будет собирать и релиз и отладку, но может перетереть предыдущий вариант (например релизный), т.к. зависит от настроек проекта или make debug - для сборки отладочной версии приложения или make release - для сборки релизной версии приложения |
|
|
Fedcomp |
24.10.2010, 13:16
Сообщение
#6
|
Новичок Группа: Новичок Сообщений: 5 Регистрация: 23.10.2010 Пользователь №: 2146 Спасибо сказали: 0 раз(а) Репутация: 0 |
Дело сдвинулось, нашел ваш пост по этому поводу http://www.forum.crossplatform.ru/index.ph...post&p=8828
Действительно у меня стоял борландовский C++, убрал его из переменных сред подключился mingw (на самом деле не подключился, я скопировал mingw32-make.exe в файл с названием make.exe, теперь из командной строки запускается как и положено mingw) Поидее теперь qmake должен работать нормально. Значит проблема не в этом. Дело в том что я пытаюсь пробный проект скомпилить, сделал форму в Qt creator'е, и пытаюсь её подсоединить к проекту. Есть main.cpp
Есть forms/mainform/mainfrm.h
Есть forms/mainform/mainfrm.cpp
При компиляции получаю ошибку main.cpp|12|error: aggregate 'Ui::mainfrm ui' has incomplete type and cannot be defined| Кстати говоря #include "ui_mainfrm.h" не создается почему то ... |
|
|
Litkevich Yuriy |
24.10.2010, 13:39
Сообщение
#7
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Прочитай тут, проверь pro-файл
|
|
|
Fedcomp |
24.10.2010, 14:00
Сообщение
#8
|
Новичок Группа: Новичок Сообщений: 5 Регистрация: 23.10.2010 Пользователь №: 2146 Спасибо сказали: 0 раз(а) Репутация: 0 |
Можно пример самого простого приложения на Qt? и хотелось бы узнать как компилировать вручную этот проект.
|
|
|
alex977 |
24.10.2010, 14:33
Сообщение
#9
|
Активный участник Группа: Участник Сообщений: 310 Регистрация: 19.6.2008 Из: Россия, МО, г.Мытищи Пользователь №: 206 Спасибо сказали: 77 раз(а) Репутация: 8 |
Простейший пример.
hello.cpp:
hello.pro:
|
|
|
Fedcomp |
24.10.2010, 17:06
Сообщение
#10
|
Новичок Группа: Новичок Сообщений: 5 Регистрация: 23.10.2010 Пользователь №: 2146 Спасибо сказали: 0 раз(а) Репутация: 0 |
В консоли скомпилился ...
можно ли какой либо простой пример, чтобы проверить отрабатывается ли qmake при компиле? |
|
|
Текстовая версия | Сейчас: 26.11.2024, 0:06 |