Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > Qt 4.4.0 + MinGW + NetBeans 6.1


Автор: Acer 17.6.2008, 15:59
Хочу рассказать, как скомпилить программу с помощью Qt под вендой.
Я пользуюсь NetBeans IDE 6.1 по этому расскажу, как компилить Qt с помощью этой IDE. 
Устанавливаем MinGW в директорию C:\MinGW.
Устанавливаем MSys (у меня версия 1.0 по этому путь C:\msys\1.0 ) куда просит инсталятор.
Устанавливаем Qt в директорию по умолчанию ( C:\Qt\4.4.0 )
Прописываем в переменные окружения(PATH) пути C:\MinGW\bin; C:\Qt\4.4.0\bin
Перегружаем комп.
Заменяем C:\MinGW\bin\mingw32-make.exe на C:\msys\1.0\bin\make.exe (для того, чтобы компилился C++)
В настройках IDE( Tools -> Options -> C/C++ -> Build Tools ) указываем компоненты из C:\MinGW\bin. Она сама найдет компиляторы, которые ей надо.
Создаем новый проект C/C++ Aplication. В свойствах проекта во вкладке Build -> C++ Compiler в Include Directories указываем путь C:\Qt\4.4.0\include
Пишем минимальное приложение с использованием Qt:
Код

#include <Qt/qapplication.h>
#include <Qt/qlabel.h>

int main(int argc, char **argv){
    QApplication app( argc, argv );

    QLabel *lb = new QLabel( "Hello Qt in win32" );
    lb->show();

    return app.exec();
}


Через консоль заходим в директорию с нашим проектом. Например D:\CppProjects\test
затем выполняем команды
Код

D:\CppProjects\test>qmake -project
D:\CppProjects\test>qmake

Открываем IDE, открываем файл Makefile и заменяем строку
Код

QMAKE = c:\Qt\4.4.0\bin\qmake.exe

на эту
Код

QMAKE = c:/Qt/4.4.0/bin/qmake.exe

жмем Build Main Project( F11 )
Qt скомпилированно smile
потом заходим в D:\CppProjects\test\release и запускаем test.exe
Если будут проблемы с путями, то есть, например, компилятор будет ругаться на что-то типа
Код

cannot find file srcmain.cpp

если сорцы лежат в директории src то нужно в файле Makefile.Release так же изменить пути с вендовых на никсовые. то есть изменить "\" на "/".
Еще один нюанс. При добавлении/удалении файлов необходимо выполнять команды
Код

#>qmake -project
#>qmake

Автор: bsa 17.6.2008, 23:34
Acer, начнем с того, а зачем собственно компилировать QT по виндой, да еще и из-под NetBeans?
А потом, ты документацию на QT не читал вообще? Там же черным по белому написано подключать заголовочные файлы без указания расширения:
Код
#include <QApplication>
#include <QtGui> //содержи уже все QLabel, QPushButton и пр.
//поотдельности <QLabel> и пр. надо подключать только в заголовочных файлах.

int main(int argc, char **argv){
    QApplication app( argc, argv );

    QLabel *lb = new QLabel( "Hello Qt in win32" );
    lb->show();

    return app.exec();
}

http://doc.trolltech.com/4.4/mainwindows-application.html

Автор: Acer 18.6.2008, 01:08
Цитата(bsa @ 17.6.2008,  23:34)
Acer, начнем с того, а зачем собственно компилировать QT по виндой, да еще и из-под NetBeans?
А потом, ты документацию на QT не читал вообще? Там же черным по белому написано подключать заголовочные файлы без указания расширения:
Код
#include <QApplication>
#include <QtGui> //содержи уже все QLabel, QPushButton и пр.
//поотдельности <QLabel> и пр. надо подключать только в заголовочных файлах.

int main(int argc, char **argv){
    QApplication app( argc, argv );

    QLabel *lb = new QLabel( "Hello Qt in win32" );
    lb->show();

    return app.exec();
}

http://doc.trolltech.com/4.4/mainwindows-application.html

Давай начнем вот с этого:
1. Каждый пишет в той среде, в которой ему удобно
2. Каждый компилит под той платформой, под которой нужно выполнять задачи
3. Зачем мне импортировать все библиотеки, если нужно использовать только 2?
4. Каждый подключает то, что ему надо и там, где ему надо.

Автор: bsa 18.6.2008, 12:58
Цитата(Acer @ 18.6.2008,  01:08)
Давай начнем вот с этого:
1. Каждый пишет в той среде, в которой ему удобно
2. Каждый компилит под той платформой, под которой нужно выполнять задачи
3. Зачем мне импортировать все библиотеки, если нужно использовать только 2?
4. Каждый подключает то, что ему надо и там, где ему надо.

С п.п. 1 и 2 я не спорю. Вот только не могу понять, зачем тебе компилировать QT (это такая библиотека, если ты не знал, а не программа ее использующая) да еще и из-под NetBeans? Ведь вся компиляция осуществляется из командной строки, зачем геморроиться со средой разработки, когда собрать нужно только один раз (ты же не собираешься переписывать QT?)
3. Про precompiled headers слышал? Если бы слышал, то не спрашивал бы, так как на скорость сборки подключение QtGui уже не влияет, а количество мороки заметно сокращает.
4. "Каждый ходит там где хочет, а не там где предписано. А когда на голову падает кирпич, возмущается." Делать надо так, как написано в документации. Если завтра поменяют расширение с h на hpp или hxx, то только у таких как ты программа не будет собираться. Так как никто не обещал, что подобный способ подключения заголовочных файлов будет работать.

Автор: JackYF 18.6.2008, 14:17
Цитата(bsa @  18.6.2008,  11:58 Найти цитируемый пост)
3. Про precompiled headers слышал? Если бы слышал, то не спрашивал бы, так как на скорость сборки подключение QtGui уже не влияет, а количество мороки заметно сокращает.

Тут я не очень соглашусь. Лично мне абсолютно не хочется включать ненужное, я 
Код

#include <QtGui>

не юзаю, это сродни 
Код

using namespace std;

Имхо, конечно.

Насчёт всего остального полностью согласен.

Автор: bsa 18.6.2008, 16:43
JackYF, с QtGui я и не настаивал.  smile 

Автор: Acer 18.6.2008, 19:24

 ! 
JackYF
Выяснение личных отношений - в личке.

Признавать свои ошибки тоже неплохо уметь, не боги горшки обжигают, и ошибаться могут все.

bsa, извини

Автор: Acer 20.6.2008, 08:21
Понял свою ошибку. В следующий раз буду внимательней.

Автор: unicuum 25.6.2008, 20:08
Модератор: Сообщение скрыто.

Автор: Acer 28.6.2008, 11:10
Вобщем проблема была с путями.. То есть компилятор ругался, шо не может найти путь типа
Цитата
C:Qt4.4.0binqmake.exe

Я написал небольшое приложение, которое все исправляет. То есть:
Создаем проект в нетбинсе, пишем там код с юзанием Qt, потом копируем прогу( прикреплена к сообщению ) в директорию с проектом, запускаем. И потом уже компилим в нетбинсе бинарник...
При добавлении/удалении файлов из проекта необходимо повторно запускать мою программульку.

Автор: Mabramyan 20.2.2013, 08:54
Можно просто поменять настройки конфига. А именно изменить файл QT\mkspecs\win32-g++\qmake.conf
Где QT - это дирректория с QT
Поменять:

QMAKE_MOC=...
QMAKE_UIC=...
QMAKE_IDC=...

на

QMAKE_MOC        = QT/bin/moc.exe
QMAKE_UIC        = QT/bin/uic.exe
QMAKE_IDC        = QT/bin/idc.exe

Автор: dix75 23.2.2013, 00:56
Acer
Максимальная версия Netbeans которая поддерживает Qt это 6.9.1
Все последующии версии при сборке вылетают с ошибками, постил ошибки в багтрекер NetBeans все без результатно.
Поэтому все-таки пересел на QtCreator.
[/code]

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)