Название: Как класть только 1 собранную .so библиотеку в нужный каталог? Отправлено: Гурман от Ноябрь 23, 2010, 15:00 Qt 4.7, Kubuntu 10.10
При сборке динамической библиотеки в Linux создается библиотека с суффиксом .so.1.0.0 и линки на нее - .so, .so.1, .so.1.0 Мне надо, чтобы файл библиотеки ложился не в тот каталог, где происходит сборка, и создаются линки, а в другой. И чтобы в этом каталоге создавался только он один. Либо не создавать линки вообще. Можно ли это сделать настройками qmake, без использования дополнительного скрипта для копирования этого файла? Это существенно, поскольку проект мультиплатформенный, а скрипт, по определению, привязывает к Linux. Установка DLLDESTDIR не помогает, по указанному маршруту копия библиотеки не образуется. Название: Re: Как класть только 1 собранную .so библиотеку в нужный каталог? Отправлено: sadhu от Ноябрь 23, 2010, 15:27 попробуй просто DESTDIR и/или TARGET, но линки все равно будут создаваться
Название: Re: Как класть только 1 собранную .so библиотеку в нужный каталог? Отправлено: Гурман от Ноябрь 23, 2010, 15:33 пробовал, это не то, мне надо или разделить библиотеку и линки, или копировать библиотеку без линков, или отключить создание линков
Название: Re: Как класть только 1 собранную .so библиотеку в нужный каталог? Отправлено: sadhu от Ноябрь 23, 2010, 16:43 Лениво включать никсы ибо рабочий день подходит к концу, но по идее должно сработать так :
QMAKE_EXTRA_TARGETS +=clean_links clean_links.commands=unlink *$$(VER_MAJ).so *$$(VER_MAJ).$$(VER_MIN).so *$$(VER_MAJ).$$(VER_MIN).$$(VER_PAT).so Но руку на отсечение бы не дал :) А вот так вот работает точно :) , эт если надо линки где-то сохранять #path to library file fullLinkedPath=$$PWD/$$DESTDIR/ #links directory name linksDir=links #actions after creating lib file : #go to destination catalog #unlink all symlinks #create new links in links directory QMAKE_POST_LINK= cd $$DESTDIR && mkdir -p $$linksDir && unlink $(TARGET0) && unlink $(TARGET1) && unlink $(TARGET2) \ && ln -fs $$fullLinkedPath/$(TARGET) $$linksDir/$(TARGET0) && ln -fs $$fullLinkedPath/$(TARGET) $(TARGET1) $$linksDir\ && ln -fs $$fullLinkedPath/$(TARGET) $(TARGET2) $$linksDir а если не надо то можно сделать так : QMAKE_LN_SHLIB=echo |