Название: Взаимодействие проектов Отправлено: dr_Begemot от Май 07, 2009, 10:13 Проблема в следующем, есть динамическая библиотека на Qt. Однако в некоторых других прооектах нужно, чтобы эта библиотека была статической. Можно ли как-то прописать в pro-файлах этих других проектов, чтобы библиотека была перекомпилена в статическую либу?
Название: Re: Взаимодействие проектов Отправлено: spirit от Май 07, 2009, 10:15 библиотеку надо статически собирать.
Название: Re: Взаимодействие проектов Отправлено: spirit от Май 07, 2009, 10:17 вот, кстати, нашел про то как создавать либы (http://prog.org.ru/wiki/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B4%D0%B8%D0%BD%D0%B0%D0%BC%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D1%85_%D0%B1%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA), а так же как собирать приложения статически (http://prog.org.ru/wiki/index.php?title=%D0%A1%D0%B1%D0%BE%D1%80%D0%BA%D0%B0_%D1%81%D1%82%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D1%85_%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B9).
PS. не ну действительно, че так сложно поискать по форуму, по вики? ??? Название: Re: Взаимодействие проектов Отправлено: dr_Begemot от Май 07, 2009, 10:28 вот, кстати, нашел про то как создавать либы (http://prog.org.ru/wiki/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B4%D0%B8%D0%BD%D0%B0%D0%BC%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D1%85_%D0%B1%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA), а так же как собирать приложения статически (http://prog.org.ru/wiki/index.php?title=%D0%A1%D0%B1%D0%BE%D1%80%D0%BA%D0%B0_%D1%81%D1%82%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D1%85_%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B9). PS. не ну действительно, че так сложно поискать по форуму, по вики? ??? Я знаю как создавать dll и как делать их статическими, вопрос был в другом... Название: Re: Взаимодействие проектов Отправлено: ритт от Май 07, 2009, 11:11 вопрос был "Можно ли как-то прописать в pro-файлах этих других проектов, чтобы динамическая библиотека превратилась в статическую либу?" :)
spirit ответил на вопрос. Название: Re: Взаимодействие проектов Отправлено: Dodge от Май 07, 2009, 13:06 Я знаю как создавать dll и как делать их статическими, вопрос был в другом... если вы в качестве системы сборки вы используете qmake, то он при генерации Make - файла для библиотеки, создает цель для сборки - staticlib. Т.о. указав при сборке в качестве цельи - staticlib, вы можете собрать библиотеку статически.Код: make staticlib З.Ы. проверено только под линукс, как с другими платформами я не знаю. Название: Re: Взаимодействие проектов Отправлено: ритт от Май 07, 2009, 20:58 в проекте cmake вроде бы можно сразу указать сборку динамической и статической либы...
Название: Re: Взаимодействие проектов Отправлено: Dodge от Май 07, 2009, 22:06 в проекте cmake вроде бы можно сразу указать сборку динамической и статической либы... если они будут лежать рядом, то линкер какую возмет? ... имена то одинаковыеНазвание: Re: Взаимодействие проектов Отправлено: lit-uriy от Май 07, 2009, 22:29 >>если они будут лежать рядом, то линкер какую возмет? ... имена то одинаковые
туже, что и файловая система ;) Название: Re: Взаимодействие проектов Отправлено: Dodge от Май 07, 2009, 22:34 не понял... что первое по запросу попадет? ... это не серьезно :)
Название: Re: Взаимодействие проектов Отправлено: lit-uriy от Май 07, 2009, 22:43 не может быть двух одинаковых файловых объекта. Т.е. два файла с одинаковыми именами в одном каталоге.
Название: Re: Взаимодействие проектов Отправлено: Dodge от Май 07, 2009, 22:55 не может быть двух одинаковых файловых объекта. Т.е. два файла с одинаковыми именами в одном каталоге. я не идиот ;)я имел ввиду имена библиотек. Если мы собирем библиотеку mytest статически и динамически то получим 2 файла (пример для gcc): libmytest.so и libmytest.a При подключении мы указываем имя библиотеки: "-lmytest". Так вот какой из файлов, линкер возмет? Название: Re: Взаимодействие проектов Отправлено: ритт от Май 08, 2009, 00:01 -lmytest при наличии libmytest.so будет использовать его, а -llibmytest.a будет искать .а-файл
кажется, так...могу ошибаться... Название: Re: Взаимодействие проектов Отправлено: lit-uriy от Май 08, 2009, 08:07 >>libmytest.so и libmytest.a
ну для линя оно может и так. А вот для виндовоза при создании динамической библиотеки генерятся два файла mytest.dll и mytest.a и для статической один mytest.a как я понял в первом случае a-файл некая обёртка для dll'ки. Так что в одном каталоге, на виндовозе, две сборки держать не удастся. Название: Re: Взаимодействие проектов Отправлено: Dodge от Май 08, 2009, 14:21 >>libmytest.so и libmytest.a записал. ну для линя оно может и так. А вот для виндовоза при создании динамической библиотеки генерятся два файла mytest.dll и mytest.a и для статической один mytest.a как я понял в первом случае a-файл некая обёртка для dll'ки. Так что в одном каталоге, на виндовозе, две сборки держать не удастся. Тогда проверь еще пожалуйста в Makefile'е, генерит qmake цель для staticlib? ... чтоб сразу со всем разобраться. лень винду грузить смотреть. Название: Re: Взаимодействие проектов Отправлено: lit-uriy от Май 08, 2009, 17:24 >>Тогда проверь еще пожалуйста в Makefile'е, генерит qmake цель для staticlib?
Хм, в котором make-файле? Название: Re: Взаимодействие проектов Отправлено: Dodge от Май 08, 2009, 21:15 debug/release? любом =)
|