Создать moc-файл для класса только заголовка за пределами дерева проекта - PullRequest
1 голос
/ 27 сентября 2019

У меня есть некоторые классы, определенные только с использованием файла заголовков, который наследует класс QObject и использует макрос Q_OBJECT.Они помещены в определенную папку на моем ПК.Я хочу включить эти классы в мой проект qt.

Я написал файл .pri (расположенный в той же папке этих классов) следующим образом:

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

В моем.В проектном файле я включаю .pri (используя команду include()) и могу импортировать заголовки.Проблема в том, что во время компиляции у меня есть некоторые ошибки компоновки, связанные с QMetaObject, например

Plc.obj:-1: error: LNK2001: external symbol "public: virtual struct QMetaObject const * __cdecl Conveyor::metaObject(void)const " (?metaObject@Conveyor@@UEBAPEBUQMetaObject@@XZ) not resolved

Я думаю, что проблема связана с тем, что qmake не генерирует файл moc для каждого класса, этовключайте только путь заголовков.Фактически, если я удаляю макрос Q_OBJECT из этих классов, я могу успешно скомпилировать проект.

Есть способ сообщить qmake, что он должен генерировать moc-файл для этих заголовков?Я хотел бы избежать создания библиотеки или проекта для этих классов.Или, может быть, другое решение?

1 Ответ

0 голосов
/ 27 сентября 2019

Я наконец нашел решение.

Я просто добавил команду HEADER в конце файла .pri.Теперь компилятор сканирует заголовки и создает файл moc.``

Мое обновление .pri файл:

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

HEADERS += \
    $$PWD/MyClass1.h \
    $$PWD/MyClass2.h
...