Russian Qt Forum

Qt => Общие вопросы => Тема начата: _Konstantin_ от Январь 18, 2015, 15:52



Название: Сборка проектов Qt под Windows
Отправлено: _Konstantin_ от Январь 18, 2015, 15:52
Приветствую, возник вопрос по сборке проектов Qt под Windows платформы.
Собранный проект тянет с собой несколько библиотек Qt, я их складываю вместе с собранным проектом (.\Projects\xxx.exe), в корневой каталог .\Projects, все работает прекрасно, но как то не очень это выглядит красиво.
Хотелось бы эти библиотеки видеть к примеру так .\Projects\library\, а собранный файл в .\Projects\
Проекты собираю в QtCreator.


Название: Re: Сборка проектов Qt под Windows
Отправлено: Igors от Январь 18, 2015, 16:00
Ну прописывать path во всяком случае "менее надежно". Можно включить "delay loaded libraries" (как это называется в MSVC), а на старте загрузить самому из нужного места.


Название: Re: Сборка проектов Qt под Windows
Отправлено: _Konstantin_ от Январь 18, 2015, 16:15
про path я знаю, но это не совсем то, думаю есть же механизм прописывания пути какой ни будь директивы в .pro файле проекта


Название: Re: Сборка проектов Qt под Windows
Отправлено: maint от Январь 18, 2015, 16:24
.pro отвечает за сборку, а уж ни как не за выполнение.  Но вот на setLibraryPaths можно глянуть


Название: Re: Сборка проектов Qt под Windows
Отправлено: _Konstantin_ от Январь 18, 2015, 16:38
.pro отвечает за сборку, а уж ни как не за выполнение.  Но вот на setLibraryPaths можно глянуть
Спасибо :)
В описании метода прописано, что для Symbian есть ограничения, а для Windows таких ограничений нет?
И еще, объясните т.к. я начинающий в Qt, пишу в main:
Код:
   QApplication a(argc, argv);
   QStringList oStrList("\Projects\Library\");
   QApplication.setLibraryPaths(oStrList);
   // мой код
   return a.exec();
т.е. мне нужен к примеру только один путь \Projects\Library\, при этом .exe файл будет находится в \Projects\, так правильно?


Название: Re: Сборка проектов Qt под Windows
Отправлено: Igors от Январь 18, 2015, 17:15
setLibraryPath тоже нужно, но для плагинов, которые грузятся уже после запуска приложения. А для основных dll (Qt5Core и др) все по-прежнему. Надо линковать их c флагом -lweak ("delay loaded") и грузить самому. Где это (и есть ли) в QtCreator - не знаю, т.к. с ним не работаю


Название: Re: Сборка проектов Qt под Windows
Отправлено: _Konstantin_ от Январь 18, 2015, 17:44
setLibraryPath тоже нужно, но для плагинов, которые грузятся уже после запуска приложения. А для основных dll (Qt5Core и др) все по-прежнему. Надо линковать их c флагом -lweak ("delay loaded") и грузить самому. Где это (и есть ли) в QtCreator - не знаю, т.к. с ним не работаю
наверняка есть, потому как в Интернете встречал проекты, где к примеру QtCore4.dll находился в \Projects\Application\, а собранный проект находился в \Projects\xxx.exe


Название: Re: Сборка проектов Qt под Windows
Отправлено: Igors от Январь 18, 2015, 18:14
наверняка есть, потому как в Интернете встречал проекты, где к примеру QtCore4.dll находился в \Projects\Application\, а собранный проект находился в \Projects\xxx.exe
Это не значит что проект был сделан на QtCreator :) Можно ли линковать "weak" определяется компилятором, он должен создать код для автоматычной подгрузки в runtime.

Да, и перед тем как углубляться в поиск - подумайте нет ли глобальных переменных использующих Qt классы, пример
Код
C++ (Qt)
QString * str1 = 0;  // Ok, это указатель
QString str2("aaa");      // все, Qt5Core уже нельзя слинковать weak


Название: Re: Сборка проектов Qt под Windows
Отправлено: _Konstantin_ от Январь 18, 2015, 18:42
Я может из-за своей неграмотности неправильно выразился, у меня все как надо в проекте линкуется, все работает, но все qt библиотеки находятся в одном каталоге с исполняемым файлом (проектом на Qt), а хотелось бы, что бы необходимые Qt библиотеки, расположить в указанном мной каталоге, относительно каталога расположения исполняемого файла (проекта Qt).


Название: Re: Сборка проектов Qt под Windows
Отправлено: Igors от Январь 18, 2015, 19:17
Я может из-за своей неграмотности неправильно выразился, у меня все как надо в проекте линкуется, все работает, но все qt библиотеки находятся в одном каталоге с исполняемым файлом (проектом на Qt), а хотелось бы, что бы необходимые Qt библиотеки, расположить в указанном мной каталоге, относительно каталога расположения исполняемого файла (проекта Qt).
Я понял, на это и отвечал. В данном случае для "хотелки" придется немного потрудиться


Название: Re: Сборка проектов Qt под Windows
Отправлено: _Konstantin_ от Январь 18, 2015, 19:21
Я может из-за своей неграмотности неправильно выразился, у меня все как надо в проекте линкуется, все работает, но все qt библиотеки находятся в одном каталоге с исполняемым файлом (проектом на Qt), а хотелось бы, что бы необходимые Qt библиотеки, расположить в указанном мной каталоге, относительно каталога расположения исполняемого файла (проекта Qt).
Я понял, на это и отвечал. В данном случае для "хотелки" придется немного потрудиться
В IDE QtCreator в .pro фале, я указываю какие модули подключать, может там же и линковку указать?


Название: Re: Сборка проектов Qt под Windows
Отправлено: Old от Январь 18, 2015, 19:39
Я может из-за своей неграмотности неправильно выразился, у меня все как надо в проекте линкуется, все работает, но все qt библиотеки находятся в одном каталоге с исполняемым файлом (проектом на Qt), а хотелось бы, что бы необходимые Qt библиотеки, расположить в указанном мной каталоге, относительно каталога расположения исполняемого файла (проекта Qt).
Это легко сделать с помощью простого bat-файла.


Название: Re: Сборка проектов Qt под Windows
Отправлено: __Heaven__ от Январь 18, 2015, 23:54
Я может из-за своей неграмотности неправильно выразился, у меня все как надо в проекте линкуется, все работает, но все qt библиотеки находятся в одном каталоге с исполняемым файлом (проектом на Qt), а хотелось бы, что бы необходимые Qt библиотеки, расположить в указанном мной каталоге, относительно каталога расположения исполняемого файла (проекта Qt).
Это легко сделать с помощью простого bat-файла.

Присоединяюсь


Название: Re: Сборка проектов Qt под Windows
Отправлено: Igors от Январь 19, 2015, 10:31
Это легко сделать с помощью простого bat-файла.
Цыганщина  :)


Название: Re: Сборка проектов Qt под Windows
Отправлено: Old от Январь 19, 2015, 10:38
Цыганщина  :)
Серьезные извращенцы это же могут сделать через отдельную аппликашку-ланчер, которая будет делать то-же самое. Все зависит от неадекватности писаки. :)
Кстати, внешний ланчер можно научить многих полезным вещам.


Название: Re: Сборка проектов Qt под Windows
Отправлено: Fregloin от Январь 19, 2015, 14:48
а еще можно рядом с экзешником кинуть файл qt.conf в котором задать все нужные вам пути. Почитайте про формат qt.conf, мне так когда то помогло с нестандартными путями в убунте.


Название: Re: Сборка проектов Qt под Windows
Отправлено: panAlexey от Январь 19, 2015, 14:55
Цыганщина  :)
Серьезные извращенцы это же могут сделать через отдельную аппликашку-ланчер, которая будет делать то-же самое. Все зависит от неадекватности писаки. :)
Кстати, внешний ланчер можно научить многих полезным вещам.
Например обновлению программ?