Название: QBS: force rebuild Отправлено: esaulenka от Апрель 03, 2020, 15:47 Помогите решить следующую задачку.
В выходной бинарник надо поместить timestamp с временем сборки. Варианты решений: 1) Rule с генерацией хидера на три строчки (копипаста из vcs-module.qbs), инклюд этого заголовка. Проблема - у Rule не работает alwaysRun: true. Когда оно вообще запускается, я так и не понял, но срабатывает как-то очень нерегулярно. Как работает оригинал (без alwaysRun), вообще непонятно. 2) (более красивый, как мне кажется) помощью JS делаем property timestamp, добавляем это property в cpp.define. Работает, но каким образом заставить qbs постоянно пересобирать нужный исходник (только один файл, остальные не трогать), если, по сути, в нём ничего не поменялось? Название: Re: QBS: force rebuild Отправлено: Авварон от Апрель 03, 2020, 16:20 1) Скорее всего, нет зависимости от этого правила в результирующем продукте, см https://doc.qt.io/qbs/qml-qbslanguageitems-rule.html#a-complete-example
2) Лучше не надо. Название: Re: QBS: force rebuild Отправлено: kuzulis от Апрель 03, 2020, 18:23 А макросы __DATE__ и __TIME__ не работают? Зачем вообще какие-то Rule и прочее?
Название: Re: QBS: force rebuild Отправлено: Авварон от Апрель 03, 2020, 18:43 А макросы __DATE__ и __TIME__ не работают? Зачем вообще какие-то Rule и прочее? Ну это типа время компиляции исходника, автор хочет чтобы _любая_ пересборка (даже null build) апдейтила таймстемп. Впрочем, зачем это реально надо, я не представляю=) Название: Re: QBS: force rebuild Отправлено: esaulenka от Апрель 03, 2020, 19:01 Надо было сразу код показать:
Код: // generate timestamp header То есть зависимость есть (где-то в недрах модуля cpp), при отсутствии файла он создаётся, и всё корректно собирается. А вот когда он заново генерируется, я не понял. __TIME__ не очень интересен. Препроцессором его можно порезать-пересчитать-сложить как надо, но это настолько неудобно... Ну и проблему регулярного ребилда файла, в котором этот __TIME__ объявлен, надо как-то решать. > автор хочет чтобы _любая_ пересборка (даже null build) апдейтила таймстемп. Можно для любого не-null, как проще. Просто этот таймстамп хочется положить в отдельный файлик и не трогать его никогда больше. PS парни, отдельное спасибо за моментальный ответ! Название: Re: QBS: force rebuild Отправлено: Авварон от Апрель 03, 2020, 19:23 Вот так работает, единственное отличие что сборка происходит в product.destinationDirectory а не в сорцы
Код: import qbs PS: нужно больше инфы. Руль в модуле или продукте? Название: Re: QBS: force rebuild Отправлено: esaulenka от Апрель 04, 2020, 19:36 Вот так работает, единственное отличие что сборка происходит в product.destinationDirectory а не в сорцы Спасибо большое! Да, так работает. И так даже правильнее будет. Осталось ощущение некоторой магии, ну да ладно... Название: Re: QBS: force rebuild Отправлено: Авварон от Апрель 04, 2020, 21:41 Возможно, есть баг связанный со сброкой в сорцы, хз. Если будет не лень, еще поиграюсь.
|