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


Автор: QApple 30.4.2009, 20:20
Добрый вечер, форумчане

Есть несколько вопросов по сборке программ в QtCreater.
Т.к. для работы qt программ нужны qt-шные библиотеки, если я правильно понимаю, есть два варианта сборки программ:
1) обычная сборка + таскать с собой либы qt
2) статическая сборка

Вопросы:
1) Где (в QtCreater'e) смотреть какие библиотеки qt используются. Например если я подключил QtNetwork, какие dll и где брать? 
И сразу еще вопрос: dll это в винде, а как быть в macos? Какие особенности библиотек там?

2) Как сделать статическую сборку (без гемора, в QtCreater'e) ? Читал что нужно пересобирать сам qt, а в моем случае он идет в комплекте (sdk), как быть? Может есть более практичные способы? Тоесть если мне сегодня нужно сделать статическую сборку, а завтра я захочу обычную - каждый день пересобирать qt ? 

За глупые вопросы не пинайте, перед тем как сюда постить погуглил, но ничего конкретного (и понятного мне) не нашел  smile 

Автор: Cheloveck 30.4.2009, 21:25
Честно говоря, никогда не слышал о статической сборке Qt проектов, хотя, наверное, это возможно... но зачем?

Если ты подключил QtNetwork, то имхо логично, что нужно взять QtNetwork4.dll, все либы лежат в папке bin

Автор: QApple 30.4.2009, 21:40
Цитата(Cheloveck @ 30.4.2009,  21:25)
Честно говоря, никогда не слышал о статической сборке Qt проектов, хотя, наверное, это возможно... но зачем?

Если ты подключил QtNetwork, то имхо логично, что нужно взять QtNetwork4.dll, все либы лежат в папке bin

есть статическая. зачем? ну для удобства например, если прога небольшая и нужно "всё в одном"

ну с QtNetwork понятно, а вообще? если какой экзотический модуль или их много. может какието удобные тулзы есть чтобы посмотреть все что подключается? 

Автор: Remiznik 30.4.2009, 22:19
http://wiki.qtcentre.org/index.php?title=Building_static_applications во тут достаточно подробно про статическую сборку описано !

Автор: unicuum 30.4.2009, 22:24
Цитата(QApple @  30.4.2009,  20:20 Найти цитируемый пост)
QtCreater

QtCreator

Автор: Cheloveck 30.4.2009, 22:27
Цитата

ну для удобства например, если прога небольшая и нужно "всё в одном"

хе... и станет прога тогда большой)))

Добавлено через 57 секунд
Цитата

сли какой экзотический модуль или их много. может какието удобные тулзы есть чтобы посмотреть все что подключается?  

справка в QtCreator превосходная, там написано имя модуля, которое идентично с именем либы

Автор: QApple 30.4.2009, 23:48
ок, тогда последний вопрос по первому пункту: библиотеки для макос лежат в /qt_dir/lib/имя_библиотеки? (на примере qtnetwork: /qt_dir/lib/QtNetwork.la ?)


по второму вопросу: значит без пересборки Qt никак не обойтись (средствами самого QtCreator как вариант) ? и если нужно и так и так собирать, каждый раз пересобирать сам Qt ?

Автор: unicuum 1.5.2009, 00:17
Цитата(Cheloveck @  30.4.2009,  22:27 Найти цитируемый пост)
хе... и станет прога тогда большой)))

Меньше она станет.

Автор: Cheloveck 1.5.2009, 11:05
Цитата

Меньше она станет. 

сфига ли она станет меньшей, если к ней прилинкуются либы? =)

Добавлено через 10 минут и 35 секунд
Цитата

ок, тогда последний вопрос по первому пункту: библиотеки для макос лежат в /qt_dir/lib/имя_библиотеки? 

Не знаю где они лежат в макоси, но в линуксе они в /usr/lib, т.е. там, где все либы. Есть вариант, как делаю я, чтоб не таскать либы в венде, кидаешь их все в одно место и дописываешь в переменную PATH путь до них.

Автор: Remiznik 1.5.2009, 11:41
Цитата(Cheloveck @ 1.5.2009,  11:05)
Цитата

Меньше она станет. 

сфига ли она станет меньшей, если к ней прилинкуются либы? =)


 
если на компьютере не установлен QT  то либы туда так и так придётся перенести !
 вот у меня простое приложение соброное не в статике + либы заняло 90 метров так как пришлось брать все либы и всё что там есть !
 а тоже приложение соброное в статике заняло 10м так как не вся билиотека вошла в приложение а только нужное .... почитай на форуме при правельной настройке и отключение не нужного можно свести размер к 2м но нужно постораться и многое отключить !

разницу чувствуешь ?

Автор: QApple 1.5.2009, 12:10
уважаемые, не нужно разводить флейм  про статику vs обычная сборка

все еще актуальны два вопроса:
1) библиотеки для макос лежат в /qt_dir/lib/имя_библиотеки? (на примере qtnetwork: /qt_dir/lib/QtNetwork.la ?)
2) для статики без пересборки Qt никак не обойтись (средствами самого QtCreator как вариант) ? и если нужно и так и так собирать, каждый раз пересобирать сам Qt ? 

Автор: Remiznik 1.5.2009, 14:38
по 2 !
без перезборки не обойтись никак та как нужно сконфигуировать библиотеки !
если нужны два разных варианта сборки то это можно указать параметрами или же можно  поставить два Qt  в разные папки и при не обходимости менять в Creator папку с библиотеками это там легко делаеться )

Автор: Cheloveck 1.5.2009, 18:37
Remiznik, да понимаю я всё, я имел введу размер исполняемого модуля. Ну а либы таскать за сабой не так уж необходимо, приложения на GTK требуют установки GTK, а чем Qt хуже?

Автор: bsa 1.5.2009, 19:05
QApple, а ты сам можешь посмотреть, где в макооси лежат либы? Кстати, сомневаюсь, что QtNetwork.la - это библиотека. Так как в линуксе это файл libtool. Скорее всего, тебе нужно искать файлы вида: libQtNetwork.so.* (вместо звездочки числа через точку). Хотя, может вместо so быть что-то другое

Автор: kemiisto 1.5.2009, 19:31
Цитата(bsa @  1.5.2009,  17:05 Найти цитируемый пост)
Хотя, может вместо so быть что-то другое 

*.dylib
А вообще, на Mac OS Qt (тот который в бинарном SDK) идёт набором Framework'ов. Deploying там достаточно специфический.

Автор: QApple 1.5.2009, 19:55
Цитата(kemiisto @ 1.5.2009,  19:31)
Цитата(bsa @  1.5.2009,  17:05 Найти цитируемый пост)
Хотя, может вместо so быть что-то другое 

*.dylib
А вообще, на Mac OS Qt (тот который в бинарном SDK) идёт набором Framework'ов. Deploying там достаточно специфический.

можно подробнее что за набор фреймворков и откуда тогда либы брать?

у меня QtCreator показывает "Auto-detected Qt" в каталоге /usr. Тоесть либы брать из /usr/lib, но там много мусора. Как найти то что нужно?

кстати риторическое отступление про макос - тут непринято делать инсталляторы, таскать с собой либы и тд. Обычно программа состоит из одного .app файла большого размера и это удобно. Чтобы так было нужно делать статическую сборку и никак иначе -) . А вот в форточках уже имеет смысл писать инсталлятор

Автор: kemiisto 1.5.2009, 20:26
Цитата(QApple @  1.5.2009,  17:55 Найти цитируемый пост)
кстати риторическое отступление про макос - тут непринято делать инсталляторы, таскать с собой либы и тд. Обычно программа состоит из одного .app файла большого размера и это удобно. Чтобы так было нужно делать статическую сборку и никак иначе -) . А вот в форточках уже имеет смысл писать инсталлятор 

Собственно, вот в этом предложении и кроется причина Ваших неудач... Вы не читаете официальные доки. А зря...

Во-первых, что значит не принято делать? Даже большая часть программ от Apple идёт с инсталляторами. 

Во-вторых, нет, Application Bundle - это не файл, а папка. 

В-третьих, различные модели распространения http://doc.trolltech.com/4.5/deployment-mac.html. Я выбрал для своего текущего проекта модель с включением нужных Frameworks в bundle. Благо есть http://labs.trolltech.com/blogs/2007/08/23/deploying-mac-applications-without-the-hassle/, который делает эту работу в автоматическом режиме.

Если хочется статической сборки, надо для начала собрать сам Qt статически из сорцов. Об этом написано всё там же. Но зачем?

Автор: QApple 1.5.2009, 20:34

>>Во-первых, что значит не принято делать? Даже большая часть программ от Apple идёт с инсталляторами.
на маке уже больше двух лет, с инсталлером идут крайне редко, в основном очень большие программы. может процентов 10% от всех.
но это неважно

про Application Bundle вкурсе

про macdeployqt очень интересно, буду гуглить

насчет статической сборки я еще не решил что мне нужно. точнее я знаю что мне нужно - независимый .app который будет работать на любой макос

Автор: bsa 2.5.2009, 23:37
Цитата(QApple @ 1.5.2009,  20:34)
на маке уже больше двух лет, с инсталлером идут крайне редко, в основном очень большие программы. может процентов 10% от всех.

да ладно? по мне, так там процентов 10% как раз идут без инсталлера. С другой стороны, инсталлеры которые создавались специально для мака (а не универсальные), выглядят очень симпатично и логично (хотя, поначалу я смотрел на него, как баран на новые ворота) - нужно перетащить иконку программы на папочку (или что там, я уже забыл). После того, как юзер это делает, программа уже устанавливается. И совсем не обязательно, что программа состоит из одного только файла.


А кто тут такой умный, всем сообщениям без разбору минусы ставит?

Автор: SaDFromSpb 29.5.2013, 00:03
Цитата(Remiznik @  1.5.2009,  14:38 Найти цитируемый пост)
 и при не обходимости менять в Creator папку с библиотеками это там легко делаеться ) 

Как?

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