Russian Qt Forum

Qt => Qt-инструментарий => Тема начата: SLiDER от Декабрь 25, 2014, 16:05



Название: [РЕШЕНО] qbs и правила (Rule)
Отправлено: SLiDER от Декабрь 25, 2014, 16:05
В попытке написать правило создающее заголовочники-заглушки (а-ля Qt) столкнулся с тем фактом, что qbs отказывается выполнять правила выход которых никто не использует. Я конечно понимаю, оптимизация и всё такое, но ... Может кто-нить знает нормальный способ заставить его выполнять правило выход которого не заведён ни на чей вход? Возможен костыль. Если прописать в тэги выходных артефактов тип продукта, для приложения это "application", для статической библиотеки  "staticlibrary" и т.п. Но это весьма не удобный костыль, особенно если выносить данную функциональность в отдельный модуль.


Название: Re: qbs и правила (Rule)
Отправлено: kuzulis от Декабрь 25, 2014, 16:20
Ничего не понял. Что нужно то?

Если Rule совсем кастомное (совсем кастомные теги, которых не знает ядро qbs) и это Rule завернуто в модуль. То чтобы оно выполнялось нужно добавить additionalProductTypes в модуль. И в своем проекте использовать этот тип.

модуль MyCoolModule:
Код:
Module {
    additionalProductTypes: ["my_cool_type"]

    FileTagger {
        patterns: [ "*.mycoolextension" ]
        fileTags: [ "my_cool_in" ]
    }
    
    Rule {
        inputs: [ "my_cool_in" ]
        Artifact {
            filePath: product.destinationDirectory + "/" + FileInfo.fileName(input.filePath)
            fileTags: [ "my_cool_type" ]
        }
        prepare: {
            ...
        }
    }
}

продукт MyCoolProduct:
Код:
Product {
    name: "MyCoolProduct"
    type: [ "my_cool_type" ]

    Depends { name: "MyCoolModule" }
    ...
}


Название: Re: qbs и правила (Rule)
Отправлено: SLiDER от Декабрь 25, 2014, 16:27
Вы читаете мои мысли :) Всё так. И всё работает. Спасибо.


Название: Re: [РЕШЕНО] qbs и правила (Rule)
Отправлено: VVN от Февраль 24, 2017, 01:43
Подниму тему уж очень созвучна с тем что мне нужно.

Как запустить Rule без выноса ее в отдельный модуль.

Есть Product в котором компилируем кучку фалов и получаем столько же объектников.
Тут все ок.
Но затем мне нужно взять бинарник сделать из него объектник и скормить его (+ скомпилированные
файлы ) линкеру.

Вот тут затыка причем со странными глюками.

1) Rule само по себе не хочет работать нужен вход и выход, как говорили, если выхода нет, то и правило не сработает.
2) Если я его запускаю (пока просто копирую файл) то проект не хочет прособираться (директорию не может очистить)
причем иногда линкер не находит некотрые файлы. Они просто не скомпилировались.

Убираю это правило все Ок.

Вообще есть ли годное описание qbs?
Тяжело понять как это все работает.
 


Название: Re: [РЕШЕНО] qbs и правила (Rule)
Отправлено: kuzulis от Февраль 24, 2017, 11:06
Цитировать
Вообще есть ли годное описание qbs?

1. Скачайте сорцы QBS и смотрите в их папочках examples и tests.
2. Скачайте сорцы QtCreator и смотрите как QBS там используется (мне оч. помогло).
3. Поднимите архив списка рассылки и может там что найдется годное.