Russian Qt Forum

Qt => Qt-инструментарий => Тема начата: Гурман от Июль 13, 2010, 14:41



Название: сборки Qt для static и shared компоновки конфликтуют
Отправлено: Гурман от Июль 13, 2010, 14:41
проект собирался динамически, ветку Qt для него не трогал, установил параллельно еще одну ветку той же версии Qt, добавил ей в название static, сгенерил в ней статические библиотеки

НО! при запуске qtcreator из каталога ветки (где библиотеки и конфигурационные файлы для shared) и попытке собрать стороннюю часть проекта получаю сообщение об ошибке на
Код:
	throw errorcode;

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

получилось, что полетели настройки ветки, предназначенной для динамической сборки - как это произошло, если я ставил и конфигурировал статический Qt параллельно?? разве только маршруты

смотрю в маршруты - там все нормально осталось, QTDIR и переменные в PATH указывают на ветку для динамической сборки

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

кстати, попутно вопрос - а так ли обязательно -no-exceptions для статической сборки, и нельзя ли собрать проект статически только с библиотеками Qt, а для работы исключений класть вместе с exe библиотеку mingwm10.dll? она крохотная, и все равно продукт из нескольких файлов состоит, и LGPL лицензия вроде позволяет

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


Название: Re: сборки Qt для static и shared компоновки конфликтуют
Отправлено: Sahab от Июль 13, 2010, 15:14
както все путанно...
Цитировать
собираю код, который не использует mingwm10.dll
?
Цитировать
собираю код, который не использует mingwm10.dll то есть, может использовать исключения
???

в креаторе настройки профили qt настраиваются


Название: Re: сборки Qt для static и shared компоновки конфликтуют
Отправлено: Гурман от Июль 13, 2010, 15:25
что именно путанно?

везде написанно, что для статической сборки нельзя использовать исключения, поскольку они не работают в mingwm10.dll и Qt надо собирать с соответствующим ключом - я так и сделал

проект у меня состоит из нескольких подпроектов, в одном из них (да и в других тоже, на самом деле) активно используются исключения, я попытался этот проект собрать в Release в том варианте, где он ранее нормально собирался в Debug - получил сообщение об ошибке

где именно в креаторе разрешить исключения для проекта - я не вижу, вижу только ключ -fno-exceptions в Makefile.release, но его убирать нет смысла, поскольку при полной сборке этот файл генерится заново

я не могу сейчас понять, откуда в Makefile попадает ключ -fno-exceptions если ветка shared дистрибутива Qt не изменялась, этот ключ должен быть только в ветке static


Название: Re: сборки Qt для static и shared компоновки конфликтуют
Отправлено: lit-uriy от Июль 13, 2010, 16:38
>>для статической сборки нельзя использовать исключения, поскольку они не работают в mingwm10.dll
вообще-то mingwm10.dll - это как раз для их обработки.
А исключения не рекомендуют именно для того, чтобы от её зависимости отказаться


Название: Re: сборки Qt для static и shared компоновки конфликтуют
Отправлено: Гурман от Июль 13, 2010, 17:57
ну я имел в виду, что при статической сборки с ней исключения нельзя использовать, они не работают, поэтому рекомендуют везде ключ -no-exceptions

однако эти факты мне ничего не дают - похоже придется переставлять Qt и генерить static заново, но с исключениями, если вообще это будет работать


Название: Re: сборки Qt для static и shared компоновки конфликтуют
Отправлено: Гурман от Июль 14, 2010, 10:52
некогда было разбираться где что поломалось, снес сгенерированную static версию Qt под корешок, а shared версию переустановил заново прямо поверх имевшейся - проекты в shared варианте стали собираться

после чего установил параллельно снова отдельную версию Qt в каталог с суффиксом static и в нем сделал configure но уже без ключа -no-exceptions, сделал make, библиотеки собрались, проверил, что после этого shared варианты приложения тоже собираются

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