Думаю многие из вас знакомы с таким мощным кросс-платформенным инструментарием, как Qt и насущной проблемой сборки Qt с Visual Studio. Недавно возникла необходимость перехода на новую, недавно вышедшую, 5 версию. К слову сказать, сам переход проблем не вызвал, да вот понадобилось использовать Qt в Visual Studio (обсуждение необходимости данной меры выходит за рамки этого топика).
Последний раз, собирать Qt в Visual Studio мне приходилось 2 года назад, еще с версией 4.7.3 и, честно сказать, положительных эмоций от этой сборки у меня осталось мало не осталось. Как сейчас помню, необходимо было, минут 10-15 конфигурировать исходники Qt, а дальше в работу вступал jom, а работа его длилась ~3-4 часа (на моем Core i5-2430M). Только после сих деяний можно было писать на Qt в студии.
Перспектива повторения этих операций меня не радовала. Прочитав на хабре пару статей о попытках сборки Qt в Visual Studio выяснил, что теперь дела обстоят еще печальнее, для сборки необходимы: ActivePerl, Python, Ruby, ICU, плюс ко всему, весь процесс сборки теперь длится в разы дольше:
nmake собирал qtwebkit уже часов 8 к ряду. Сейчас прошло уже более суток с момента последнего запуска nmake
С грустной миной на лице, с осознанием всего наваливающегося груза, я поставил на скачивание исходники, перл и т.д. Без надежды на успех, решил попробовать подключить библиотеки Qt к Visual Studio так, как это делается с некоторыми библиотеками для использования WinAPI и, я долго не мог поверить, но — получилось! А теперь обо всем по порядку и подробней (хотя подробно даже нечего описывать, все весьма просто и думаю, что я отнюдь не первый, кто до этого додумался).
Предполагается, что Вы имеете уже установленные:
- Microsoft Visual Studio 2010/2012
- Qt5 msvc2010/2012
...
...
Создаем проект Qt5 (можно открыть имеющийся *.pro-файл, через меню Qt5). Пишем всеми любимый «Hello, World!»:
#include <QtWidgets/QApplication>
#include <QtWidgets/QLabel>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QLabel *label = new QLabel("Hello world!");
label->show();
return app.exec();
}
Read more: Habrahabr.ru
QR: