Russian Qt Forum
Ноябрь 23, 2024, 11:50 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Сборка проектов Qt под Windows  (Прочитано 8596 раз)
_Konstantin_
Гость
« : Январь 18, 2015, 15:52 »

Приветствую, возник вопрос по сборке проектов Qt под Windows платформы.
Собранный проект тянет с собой несколько библиотек Qt, я их складываю вместе с собранным проектом (.\Projects\xxx.exe), в корневой каталог .\Projects, все работает прекрасно, но как то не очень это выглядит красиво.
Хотелось бы эти библиотеки видеть к примеру так .\Projects\library\, а собранный файл в .\Projects\
Проекты собираю в QtCreator.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #1 : Январь 18, 2015, 16:00 »

Ну прописывать path во всяком случае "менее надежно". Можно включить "delay loaded libraries" (как это называется в MSVC), а на старте загрузить самому из нужного места.
Записан
_Konstantin_
Гость
« Ответ #2 : Январь 18, 2015, 16:15 »

про path я знаю, но это не совсем то, думаю есть же механизм прописывания пути какой ни будь директивы в .pro файле проекта
Записан
maint
Гость
« Ответ #3 : Январь 18, 2015, 16:24 »

.pro отвечает за сборку, а уж ни как не за выполнение.  Но вот на setLibraryPaths можно глянуть
Записан
_Konstantin_
Гость
« Ответ #4 : Январь 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\, так правильно?
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #5 : Январь 18, 2015, 17:15 »

setLibraryPath тоже нужно, но для плагинов, которые грузятся уже после запуска приложения. А для основных dll (Qt5Core и др) все по-прежнему. Надо линковать их c флагом -lweak ("delay loaded") и грузить самому. Где это (и есть ли) в QtCreator - не знаю, т.к. с ним не работаю
Записан
_Konstantin_
Гость
« Ответ #6 : Январь 18, 2015, 17:44 »

setLibraryPath тоже нужно, но для плагинов, которые грузятся уже после запуска приложения. А для основных dll (Qt5Core и др) все по-прежнему. Надо линковать их c флагом -lweak ("delay loaded") и грузить самому. Где это (и есть ли) в QtCreator - не знаю, т.к. с ним не работаю
наверняка есть, потому как в Интернете встречал проекты, где к примеру QtCore4.dll находился в \Projects\Application\, а собранный проект находился в \Projects\xxx.exe
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #7 : Январь 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
Записан
_Konstantin_
Гость
« Ответ #8 : Январь 18, 2015, 18:42 »

Я может из-за своей неграмотности неправильно выразился, у меня все как надо в проекте линкуется, все работает, но все qt библиотеки находятся в одном каталоге с исполняемым файлом (проектом на Qt), а хотелось бы, что бы необходимые Qt библиотеки, расположить в указанном мной каталоге, относительно каталога расположения исполняемого файла (проекта Qt).
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #9 : Январь 18, 2015, 19:17 »

Я может из-за своей неграмотности неправильно выразился, у меня все как надо в проекте линкуется, все работает, но все qt библиотеки находятся в одном каталоге с исполняемым файлом (проектом на Qt), а хотелось бы, что бы необходимые Qt библиотеки, расположить в указанном мной каталоге, относительно каталога расположения исполняемого файла (проекта Qt).
Я понял, на это и отвечал. В данном случае для "хотелки" придется немного потрудиться
Записан
_Konstantin_
Гость
« Ответ #10 : Январь 18, 2015, 19:21 »

Я может из-за своей неграмотности неправильно выразился, у меня все как надо в проекте линкуется, все работает, но все qt библиотеки находятся в одном каталоге с исполняемым файлом (проектом на Qt), а хотелось бы, что бы необходимые Qt библиотеки, расположить в указанном мной каталоге, относительно каталога расположения исполняемого файла (проекта Qt).
Я понял, на это и отвечал. В данном случае для "хотелки" придется немного потрудиться
В IDE QtCreator в .pro фале, я указываю какие модули подключать, может там же и линковку указать?
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #11 : Январь 18, 2015, 19:39 »

Я может из-за своей неграмотности неправильно выразился, у меня все как надо в проекте линкуется, все работает, но все qt библиотеки находятся в одном каталоге с исполняемым файлом (проектом на Qt), а хотелось бы, что бы необходимые Qt библиотеки, расположить в указанном мной каталоге, относительно каталога расположения исполняемого файла (проекта Qt).
Это легко сделать с помощью простого bat-файла.
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #12 : Январь 18, 2015, 23:54 »

Я может из-за своей неграмотности неправильно выразился, у меня все как надо в проекте линкуется, все работает, но все qt библиотеки находятся в одном каталоге с исполняемым файлом (проектом на Qt), а хотелось бы, что бы необходимые Qt библиотеки, расположить в указанном мной каталоге, относительно каталога расположения исполняемого файла (проекта Qt).
Это легко сделать с помощью простого bat-файла.

Присоединяюсь
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #13 : Январь 19, 2015, 10:31 »

Это легко сделать с помощью простого bat-файла.
Цыганщина  Улыбающийся
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #14 : Январь 19, 2015, 10:38 »

Цыганщина  Улыбающийся
Серьезные извращенцы это же могут сделать через отдельную аппликашку-ланчер, которая будет делать то-же самое. Все зависит от неадекватности писаки. Улыбающийся
Кстати, внешний ланчер можно научить многих полезным вещам.
« Последнее редактирование: Январь 19, 2015, 10:44 от Old » Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.128 секунд. Запросов: 23.