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

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

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: Формирование текстового файла в qmake проекте  (Прочитано 14679 раз)
twp
Гость
« Ответ #15 : Май 21, 2015, 21:59 »

Оно, просто требовать от "замены по шаблону" еще и копирование файла шаблона уже слишком Улыбающийся
А собственно в чем проблема задать копирование файла-шаблона в директорию проекта? Вот примерный вариант:

Код:
!exists($$OUT_PWD/template.qrc.in) {
    COPY_CMD = $$QMAKE_COPY <SOURCE_DIR>\template.qrc.in $$OUT_PWD/template.qrc.in
    system($$COPY_CMD)
}

QMAKE_SUBSTITUTES += $$OUT_PWD/template.qrc.in

P.S. Пути для копирования системно-зависимые, и для винды надо делать замену:

Код:
WIN_OUT_PWD = $$replace(OUT_PWD, /, \\)
Записан
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« Ответ #16 : Май 21, 2015, 22:35 »

Только наоборот - после работы QMAKE_SUBSTITUTES результат без .in надо копировать в подкаталог проекта. И желательно удалять его в каталоге сборки. Иначе там будет болтаться файл с одинаковым именем, но с разным содержимым, относящийся к разным подпроектам... Такие вещи чреваты разными неожиданностями.
Записан

2^7-1 == 127, задумайтесь...
twp
Гость
« Ответ #17 : Май 21, 2015, 23:24 »

Можно заменить вместо QMAKE_COPY на QMAKE_MOVE для переноса с удалением. Но вообще я не совсем понял манипуляции с каталогами. Пример как организовано в моем проекте: файл шаблона (допустим w.qrc.in) лежит в каком-то общем каталоге (не принадлежащему ни одному из проектов) под контролем версий и он используется как шаблон для генерации файлов в нескольких проектах. В каждом проекте в pro-файле прописано копирование файла-шаблона в каталог проекта и генерация собственно целевого файла. В итоге в каталоге сборки проекта будут находятся файлы w.qrc.in и сгенерированный w.qrc. Оба файла удаляются при полной очистке сборки через git clean -dfx.
Записан
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« Ответ #18 : Май 22, 2015, 00:29 »

Можно заменить вместо QMAKE_COPY на QMAKE_MOVE для переноса с удалением. Но вообще я не совсем понял манипуляции с каталогами. Пример как организовано в моем проекте: файл шаблона (допустим w.qrc.in) лежит в каком-то общем каталоге (не принадлежащему ни одному из проектов) под контролем версий и он используется как шаблон для генерации файлов в нескольких проектах. В каждом проекте в pro-файле прописано копирование файла-шаблона в каталог проекта и генерация собственно целевого файла. В итоге в каталоге сборки проекта будут находятся файлы w.qrc.in и сгенерированный w.qrc. Оба файла удаляются при полной очистке сборки через git clean -dfx.

У меня у всех соответствующих подпроектов (TEMPLATE = subdirs) один и тот же target dir. Более того, у них один и тот же код сборки в файле .pro, который инклюдится из одного файла w.pri. Эти подпроекты - плагины, которые собираются сразу там, откуда их на отладку грузит папа-проект, а он грузит их из одного каталога app_path/plugins. А w.qrc при сборке каждого плагина должен находиться у каждого подпроекта в том же каталоге, где находится его w.pro. Ибо w.qrc - это специфичный ресурс плагина с его иконкой, которая тут же рядом лежит. Если у всех подпроектов QMAKE_SUBSTITUTES будет кидать w.qrc в каталог сборки - это значит, что он будет кидать его в один и тот же каталог, где вообще то он совершенно не нужен. И т.д. - после каждого вызова qmake для любого плагина, каждому плагину будет пришиваться один и тот же файл описания ресурсов. Чтобы этого не было, из общего каталога сборки, после QMAKE_SUBSTITUTES необходимо утаскивать полученный w.qrc в каталог исходников плагина. Муторно это всё как-то...
Записан

2^7-1 == 127, задумайтесь...
twp
Гость
« Ответ #19 : Май 22, 2015, 19:44 »

Чтобы этого не было, из общего каталога сборки, после QMAKE_SUBSTITUTES необходимо утаскивать полученный w.qrc в каталог исходников плагина. Муторно это всё как-то...

А не проще ли скопировать w.qrc.in в каждую деректорию плагина к w.pro и уже там делать подмену параметров шаблона? Я так понимаю, что QMAKE_SUBSTITUTES прописывается в w.pri?
Записан
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« Ответ #20 : Май 24, 2015, 01:00 »

Чтобы этого не было, из общего каталога сборки, после QMAKE_SUBSTITUTES необходимо утаскивать полученный w.qrc в каталог исходников плагина. Муторно это всё как-то...

А не проще ли скопировать w.qrc.in в каждую деректорию плагина к w.pro и уже там делать подмену параметров шаблона? Я так понимаю, что QMAKE_SUBSTITUTES прописывается в w.pri?

w.qrc.in будет одинаковый для всех плагинов, нет особого смысла его размножать, тем более, что на необходимость копировать w.qrc это никак не влияет
Записан

2^7-1 == 127, задумайтесь...
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


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