Миграция с qmake на qbs, Аналоги для файла .pri и установка техники - PullRequest
0 голосов
/ 22 мая 2018

QBS очень легкий и классный материал.Но, пожалуйста, помогите мне понять некоторые приемы qbs.

1) Представьте, что у меня есть каталог с некоторыми источниками.С помощью qmake я мог бы создать файл «include.pri» в этом каталоге с содержимым:

INCLUDEPATH += $$PWD
DEPENDPATH += $$PWD

HEADERS +=  $$PWD/my_file.h
SOURCES +=  $$PWD/my_file.cpp

, а затем включить его (и многие другие, включая файлы) в ЛЮБОЙ проект, просто записав

include (some_path/include.pri)

in. pro (.pri) file .

Каким будет аналог для qbs?

Я знаю о Module элементе, но потомлюбой каталог, который я хочу включить, мне нужно вставить в «модули» каталог.Это нужно для моего основного проекта, это можно увидеть с помощью qbsSearchPaths .И что оборачивать каждый каталог с «модулями» будет немного неудобно.

2) Если бы тогда я хотел сделать статическую библиотеку на основе каталога этих источников, с помощью qmake я мог быустановить публичные заголовки и файл lib в какой-нибудь внешний каталог, доступный из любого другого проекта.Но могу ли я сделать это с помощью QBS?Я пришел к выводу, что Group . install предоставляет только пути относительно build dir, а не какой-то абстрактный (абсолютный) путь.Если так, то в чем причина?

1 Ответ

0 голосов
/ 22 мая 2018

1) В зависимости от ваших конкретных требований, у вас есть два возможных решения.Первый - превратить содержимое вашего .pri-файла в статическую библиотеку:

StaticLibrary {
    name: "helper_lib"
    Depends { name: "cpp" }
    files: ["myfile.cpp", "myfile.h"]
    Export {
        Depends { name: "cpp" }
        cpp.includePaths: path
    }
}

Затем добавьте зависимость от этой библиотеки везде, где вам нужна ее функциональность:

CppApplication {
    name: "myapp"
    Depends { name: "helper_lib" }
}

Этоявляется наиболее разумным подходом, если исходники будут компилироваться одинаково из любой точки, где они были извлечены.

Второй способ - наследовать от элемента группы:

Group { // top-level item in file mylibgroup.qbs
    prefix: path + "/"
    files: ["mylib.cpp", "mylib.h"]
}

Использовать его какthis:

import "mylibgroup.qbs" as MyLibGroup
CppApplication {
    MyLibGroup { }
}

Но учтите, что в этом случае пути включения должны быть заданы в импортируемом продукте, если только они не применяются только к файлам в группе.

2) qbs.installDir указывает внутри «корневого каталога установки», который вы можете упаковать, например, в архив tar.gz или любой другой.Для прямой установки в локальную систему вы можете установить корневой каталог установки в корневой каталог системы.Например:

$ qbs build --no-install qbs.installRoot:/
$ sudo qbs install
...