Russian Qt Forum
Сентябрь 30, 2024, 18:27 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: [Решено] Win32: Замена QMAKE_POST_LINK или костыли для mkdir/copy, etc.  (Прочитано 6376 раз)
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
« Последнее редактирование: Декабрь 20, 2010, 12:35 от frostyland » Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #1 : Ноябрь 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
Записан

Юра.
frostyland
Гость
« Ответ #2 : Ноябрь 15, 2010, 15:01 »

Да не лучше, к сожалению.

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

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

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

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

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

« Последнее редактирование: Ноябрь 15, 2010, 15:35 от frostyland » Записан
frostyland
Гость
« Ответ #3 : Декабрь 20, 2010, 12:36 »

Приделал костыли, см топовый пост.
Добавлю, что настройка эта созраняется в *.pro.user - файле
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.16 секунд. Запросов: 23.