Установить заголовки в соответствующие каталоги

Я пытаюсь установить заголовки моей библиотеки, используя QMake. Эти заголовки задали иерархический порядок, который также должен применяться к цели установки. Мое текущее решение для этого состоит в том, чтобы добавить много целей (каждая для одного подкаталога):

...
headers.path = /usr/include/foo/widgets
headers_base.path = /usr/include/foo/widgets
headers_data.path = /usr/include/foo/widgets/data
headers_editors.path = /usr/include/foo/widgets/editors
...
HEADERS_BASE += \
    foo.hpp \
    bar.hpp
HEADERS_DATA += \
    data/foo.hpp \
    data/bar.hpp
HEADERS_EDITORS += \
    editors/foo.hpp \
    editors/bar.hpp
...
HEADERS += $$HEADERS_BASE \
    $$HEADERS_DATA \
    $$HEADERS_EDITORS

Это тедий и ошибка-обрезка. Я хотел бы использовать что-то простое и прямое, как nobase в автоинструментах. Что-то вроде этого:

magic_HEADERS += \
    foo.hpp \
    bar.hpp
    data/foo.hpp \
    data/bar.hpp
    editors/foo.hpp \
    editors/bar.hpp

Заметка

имеющий

HEADERS += \
    foo.hpp \
    bar.hpp
    data/foo.hpp \
    data/bar.hpp
    editors/foo.hpp \
    editors/bar.hpp

Устанавливает все заголовки в одном каталоге.

1 ответ

Заголовки будут установлены, если вы измените файл.pro с примером:

HEADERS += \
    include/widgets/foo.hpp \
    include/widgets/bar.hpp \
    include/widgets/data/foo.hpp \
    include/widgets/data/bar.hpp \
    include/widgets/editors/foo.hpp \
    include/widgets/editors/bar.hpp

unix {
    headers.path = /usr/local/include
    headers.files = $$PWD/include/*

    target.path = /usr/local/lib
    INSTALLS += target headers
}
Другие вопросы по тегам