Кт, Кбс:генерировать moc_Filename.cpp автоматически

StackOverflow https://stackoverflow.com//questions/25004250

  •  20-12-2019
  •  | 
  •  

Вопрос

Итак, у меня есть класс с тегом Q_OBJECT, для использования которого требуется предварительно созданный .moc.

В моем файле .qbs есть CppApplication элемент;похоже, это неправильный тип проекта, поскольку qbs не вызывает moc ClassName.cpp чтобы создать для меня мок.Что следует использовать вместо этого/подправить?

-

Итак, я знал о зависимости Qt.core, но она не работала в моей испорченной установке Qt;пока я пытался это исправить, всплыли следующие факты:

  • Требовалось обнаружить инструментальную цепочку Qt (qbs-setup-qt) и позвоните qbs-config-ui
  • Qbs действительно хранит правила сборки в файле core.qbs, связанном через зависимость Qt/core.
    • можно скопировать/вставить правила сборки в мой собственный файл .qbs и избежать внешних зависимостей;Я рассматриваю это как грязный хак для развертывания кода в действительно поврежденных системах сборки (теперь у меня есть слово для поддержки Qt в Gentoo).
Это было полезно?

Решение

Я думаю, вам может не хватать зависимости приложения от Qt-модулей.Правило генерации файлов moc является частью модуля Qt.core.Вы можете добавить эту зависимость с помощью:

CppApplication {
    name: "MyApp"
    files: "path_to_source/**"

    Depends { name: "Qt.core" } // Optional
    Depends { name: "Qt.widgets" }
}

Поскольку все остальные модули Qt имеют неявную зависимость от Qt.core, явную зависимость от Qt.core можно пропустить, если существует зависимость от другого модуля Qt (в этом примере Qt.widgets).

Более подробную информацию можно найти на http://doc.qt.io/qbs/qt-modules.html

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top