ما هو الغرض من القمامة (الملفات) التي يمتلكها QT Creator تلقائيًا وكيف يمكنني ترويضها؟
-
04-10-2019 - |
سؤال
أنا جديد إلى حد ما على QT ، وأنا أستخدم Nokia Qt SDK Beta الجديد وأعمل على تطوير تطبيق صغير لـ Nokia N900 في وقت فراغي.
لحسن الحظ ، تمكنت من إعداد كل شيء بشكل صحيح ، وكذلك لتشغيل تطبيقي على الجهاز.
لقد تعلمت C ++ في المدرسة ، لذلك اعتقدت أنه لن يكون صعبًا للغاية.
أستخدم QT Creator كـ IDE الخاص بي ، لأنه لا يعمل مع Visual Studio.
أرغب أيضًا في تنفيذ تطبيقي إلى Symbian ، لذلك قمت بتشغيل المحاكي عدة مرات ، وأقوم أيضًا بتجميع Windows لتصحيح الأخطاء الشريرة. (لا يعمل مصحح الأخطاء بشكل صحيح على الجهاز.)
لقد جئت من خلفية .NET ، لذلك هناك بعض الأشياء التي لا أفهمها.
عندما أضغط على زر البناء ، يقوم QT Creator بإنشاء مجموعة من الملفات إلى دليل المشروع الخاص بي:
moc_*.cpp
الملفات - لا أعرف الغرض منها. هل يمكن لأحد أن يخبرني؟*.o
الملفات - أفترض أن هذه هي رمز الكائن*.rss
الملفات - لا أعرف غرضهم ، لكنهم بالتأكيد لا علاقة لهم بـ RSSMakefile
وMakefile.Debug
- ليس لدي أي فكرةAppName
(بدون تمديد) - القابل للتنفيذ للميمو ، وAppName.sis
- القابل للتنفيذ لسيمبيان ، أعتقد؟AppName.loc
- ليس لدي أي فكرةAppName_installer.pkg
وAppName_template.pkg
- ليس لدي أي فكرةqrc_Resources.cpp
- أعتقد أن هذا لموارد QT الخاصة بي
(أين AppName
هو اسم التطبيق المعني)
لقد لاحظت أنه يمكن حذف هذه الملفات بأمان ، فإن منشئ QT يعيدها ببساطة.
المشكلة هي أنها تلوث دليل المصدر الخاص بي. خاصةً لأنني أستخدم التحكم في الإصدار ، وإذا كان يمكن تجديده ، فلا فائدة من تحميلها إلى SVN.
لذا ، هل يمكن لشخص ما أن يخبرني ما هو الغرض الدقيق لهذه الملفات ، وكيف يمكنني أن أطلب من منشئ QT وضعه في دليل آخر؟
تعديل:
يبدو أنني تعلمت أكثر من إجابات هذا السؤال أكثر مما اعتقدت. قون
شكرا جزيلا لكل من ساعدني في الخروج. أعطيت الجميع تصويتًا ، لأنني يمكن أن أتعلم شيئًا جديدًا من كل إجابة.
في الواقع ، يبدو أن ما أوصت به روب هو الحل الأكثر ملاءمة ، لكنني وضعت علامة على إجابة كوتي المقبولة ، لأنه قدم لي أفضل تفسير حول كيفية عمل آلية بناء QT.
الحل:
يبدو أنه لا يدعم Maemo أو Symbian Toolchain بنيات Shadow حتى الآن ، لذلك أستخدمها في ملف مشروعي لحل الموقف:
DESTDIR = ./NoSVN
OBJECTS_DIR = ./NoSVN
MOC_DIR = ./NoSVN
RCC_DIR = ./NoSVN
UI_HEADERS_DIR = ./NoSVN
المحلول
ليس إجابة كاملة على سؤالك ، ولكن جزءًا منه فقط :) أيضًا ، إنه قابل للتجول.
أعتقد أنه إذا تطورت في C ++ ، فيجب أن تعرف ماذا تفعل Makefile
الوقوف. أيضا أعتقد .loc
الملف عمومًا ملف له سلاسل / محتوى محلي.
(مصدر: thelins.se)
مقارنة بنظام إنشاء C ++ بنظام بناء QT ، يمكنك أن ترى أن نظام إنشاء C ++ ، (الصناديق الرمادية) ، غير معدّل. ما زلنا نبني كود C ++ هنا. ومع ذلك ، نضيف المزيد من المصادر والرؤوس. هناك ثلاثة مولدات رمز متورطة هنا:
مترجم Meta-Object (MOC في الرسم التوضيحي) -يأخذ برنامج التحويل البرمجي Meta-Object جميع الفئات التي تبدأ بماكرو q_object وينشئ ملف مصدر MOC _*. CPP C ++. يحتوي هذا الملف على معلومات حول الفئة التي يجري moc'ed مثل اسم الفصل ، وشجرة الميراث ، وما إلى ذلك ، ولكن أيضًا تنفيذ الإشارات. هذا يعني أنه عندما تنبعث منها إشارة ، فإنك تسمي فعليًا وظيفة تم إنشاؤها بواسطة MOC.
مترجم واجهة المستخدم (UIC في الرسم التوضيحي) - يأخذ برنامج التحويل البرمجي لواجهة المستخدم تصميمات من المصمم وإنشاء ملفات رأس. ثم يتم تضمين ملفات الرأس هذه في ملفات المصدر كالمعتاد ، مما يجعل من الممكن استدعاء SetUpui لتأسيس تصميم واجهة المستخدم.
برنامج التحويل البرمجي لموارد QT (RCC في الرسم التوضيحي) - مترجم الموارد هو شيء لم نتحدث عنه بعد. يجعل من الممكن تضمين الصور والملفات النصية وما إلى ذلك في قابلة للتنفيذ ، ولكن لا يزال الوصول إليها كملفات. سننظر في هذا لاحقًا ، أريد فقط تضمينه في هذه الصورة حيث تنتمي.
آمل أن يوضح هذا التوضيح ما تفعله QT حقًا لإضافة كلمات رئيسية جديدة لطيفة إلى C ++. إذا كنت فضوليًا - لا تتردد في قراءة بعض الملفات التي تم إنشاؤها. فقط لا تغيرها - يتم تجديدها في كل مرة تقوم فيها ببناء طلبك.
إذا كنت تستخدم QTCreator ، يتم إنشاء ملفات MOC في التصحيح وإصدار المخرجين الفرعيين في دليل المشروع الخاص بك. يتم تخزين ملفات UIC في جذر دليل المشروع. ملفات RCC مملة بشكل عام ، لكنني متأكد من أنه يمكنك العثور عليها في دليل دليل المشروع الخاص بك في مكان ما.
تحرير: ليس عليك تضمين هذه الملفات في SVN. هذا هو نفس الهراء مثل الارتباط .ncb
, .pdb
وغيرها من الملفات المؤقتة. في كل مرة تقوم فيها بتغيير شيء ما في تطبيق QT الخاص بك ، يتم تجديد هذه الملفات المؤقتة كتحديث لتغييراتك ، لذلك لا يوجد معنى لالتزامهم بـ SVN.
نصائح أخرى
يمكنك إخبار Qmake (وبالتالي QTCreator) لوضع الملفات التي تم إنشاؤها في مكان آخر عن طريق إضافة ما يلي إلى ملف .pro الخاص بك للمشروع
UI_DIR = .ui
MOC_DIR = .moc
OBJECTS_DIR = .obj
هذا من شأنه أن يضع جميع ملفات واجهة المستخدم في دليل .ui ، وملفات MOC في .MOC Director وجميع ملفات .O في دليل .OBJ. (بالطبع يمكنك تغييرها كما تريد)
المساعدة ذات الصلة لـ Qmake هي في:http://doc.qt.io/archives/4.6/qmake-variable-reference.html#moc-dir
إذا كنت تستخدم Builds Shadow (ممكّن افتراضيًا في QT Creator 2.0 BETA) ثم يتم إنشاء كل هذه الملفات المؤقتة في مجلد منفصل. فمثلا:
\MyProjects\ProjectFoo
\MyProjects\ProjectFoo-build
IMHO مفيد جدا.
لا تحاول تخزين الملفات في دليل آخر ؛ بدلاً من ذلك ، أخبر التخريب لتجاهلهم ، كما هو موضح في http://svnbook.red-bean.com/en/1.4/svn.advanced.props.special.ignore.html ، فمثلا.
تتمتع معظم أنظمة التحكم في المصادر بدعم جيد لتجاهل الملفات التي تم إنشاؤها ، لأن هذه مشكلة تصل إليها كل مشروع برنامج واحد تقريبًا.