كيو تي، كيو بي اس:قم بإنشاء moc_Filename.cpp تلقائيًا

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

  •  20-12-2019
  •  | 
  •  

سؤال

لذلك لدي فئة ذات علامة Q_OBJECT، والتي تتطلب أن يكون .moc مُنشأ مسبقًا ليكون قابلاً للاستخدام.

في ملف .qbs الخاص بي، لدي ملف CppApplication غرض؛يبدو أن هذا هو النوع الخاطئ من المشروع، حيث لا يتصل به qbs moc ClassName.cpp لتوليد moc بالنسبة لي.ما الذي يجب استخدامه بدلاً من ذلك/تعديله؟

-

لذلك كنت على علم بتبعية 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