Russian Qt Forum

Qt => Установка, сборка, отладка, тестирование => Тема начата: frostyland от Ноябрь 15, 2010, 13:43



Название: [Решено] Win32: Замена QMAKE_POST_LINK или костыли для mkdir/copy, etc.
Отправлено: frostyland от Ноябрь 15, 2010, 13:43
Abstract
Есть 2 проекта, Main и Sub. Sub использует файл ui_plugdialog.h, генерируемый проектом Main в процессе компиляции.

Задача
Заставить QtCreator 2.0.1 / 2.1.0 копировать ui_plugdialog.h в некую папку для доступа. В более общем случае - копировать все что нужно куда нужно.
- QMAKE_POST_LINK в винде не работает - отпадает
- System-команды copy в .pro файле некорректны, так как pro-файл парсится ДО компиляции, и в этот момент ui_plugdialog.h еще не существует.


Решение
Добавил в "Этапах сборки" после make новый этап и прописал туда повторный запуск qmake.
В .pro-файле создал вот такие команды:
Код
C++ (Qt)
UIPATH = $$join(OUT_PWD,,,\\ui_plugdialog.h)
UIPATH = $$replace(UIPATH, /, \\)
system(copy $$UIPATH ..\\..\\..\\include\\ctcore\\ui_plugdialog.h)
 
Работает ))

Ниже оставляю цепочку обсуждения...

======================================================================
Process: переписка и поиск путей - в постах ниже


Требуется копировать заголовочники в определенный каталог
Пробовал всяко

QMAKE_POST_LINK = xcopy vutils.h $(DESTDIR)
QMAKE_POST_LINK = xcopy vutils.h $$(DESTDIR)
QMAKE_POST_LINK = cp vutils.h $(DESTDIR)
QMAKE_POST_LINK = cp vutils.h $$(DESTDIR)
QMAKE_POST_LINK = cp vutils.h $$DESTDIR
То же самое с $$HEADERS вместо vutils.h

Нифига.

КАк вообще его заставить работать?

ЗЫ.

Тупо беру из инета примеры

Код
C++ (Qt)
win32 {
...
   QMAKE_POST_LINK += $$quote(copy "$(QTDIR)\lib\QtWebKitd4.dll" $(TargetDir)$$escape_expand(\n))
...
}
 
подставляю туда уж совсем простые примеры навроде
    QMAKE_PRE_LINK = $$quote(cp v:\\briefcase.xml c:\\)
    QMAKE_PRE_LINK = $$quote(copy v:\\briefcase.xml c:\\)

Не копирует

Чо за ... ???

Сижу под виндой, Creator 2.0.1, либа 4/7/0


Название: Re: Не могу заставить работать QMAKE_POST_LINK
Отправлено: lit-uriy от Ноябрь 15, 2010, 14:36
может лучше использовать для команды make install?
тогда сделать свою цель и поместить её в INSTALLS, примерно так:
Код
Bash
buildrelease.files  = $$[QT_INSTALL_PREFIX]/bin/QtCore4.dll \
 $$[QT_INSTALL_PREFIX]/bin/QtGui4.dll \
 $$[QT_INSTALL_PREFIX]/bin/mingwm10.dll
 
buildrelease.files += qextserialport.dll \
 worldtimeclockplugin.dll
 
buildrelease.files += message.conf \
 app.ini
 
buildrelease.files += $${TARGET}
 
buildrelease.path = ./Distrib/release
 
INSTALLS  += buildrelease
 
тогда по команде make install, указанные файлы буду помещены в каталог ./Distrib/release


Название: Re: Не могу заставить работать QMAKE_POST_LINK
Отправлено: frostyland от Ноябрь 15, 2010, 15:01
Да не лучше, к сожалению.

Я планировал либы складывать например, в общий каталог, типа bin,
а заголовочники - по темам в каталог include.

Причем, это должно присходить в момент сборки либы

==========================================
Ну что...
Присобачил в PRO-файл вот такие костыли

Код
C++ (Qt)
system(copy *.h v:\\work\\include\\ctutils\\*.h)

Фигово, что команда system не понимает макросы QT, так что пути приходится прописывать явно.
Еще батник из нее я не смог запустить.



Название: Re: [Решено] Win32: Замена QMAKE_POST_LINK или костыли для mkdir/copy, etc.
Отправлено: frostyland от Декабрь 20, 2010, 12:36
Приделал костыли, см топовый пост.
Добавлю, что настройка эта созраняется в *.pro.user - файле