ما هو الغرض من القمامة (الملفات) التي يمتلكها QT Creator تلقائيًا وكيف يمكنني ترويضها؟

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

سؤال

أنا جديد إلى حد ما على QT ، وأنا أستخدم Nokia Qt SDK Beta الجديد وأعمل على تطوير تطبيق صغير لـ Nokia N900 في وقت فراغي.
لحسن الحظ ، تمكنت من إعداد كل شيء بشكل صحيح ، وكذلك لتشغيل تطبيقي على الجهاز.

لقد تعلمت C ++ في المدرسة ، لذلك اعتقدت أنه لن يكون صعبًا للغاية.
أستخدم QT Creator كـ IDE الخاص بي ، لأنه لا يعمل مع Visual Studio.

أرغب أيضًا في تنفيذ تطبيقي إلى Symbian ، لذلك قمت بتشغيل المحاكي عدة مرات ، وأقوم أيضًا بتجميع Windows لتصحيح الأخطاء الشريرة. (لا يعمل مصحح الأخطاء بشكل صحيح على الجهاز.)

لقد جئت من خلفية .NET ، لذلك هناك بعض الأشياء التي لا أفهمها.

عندما أضغط على زر البناء ، يقوم QT Creator بإنشاء مجموعة من الملفات إلى دليل المشروع الخاص بي:

  • moc_*.cpp الملفات - لا أعرف الغرض منها. هل يمكن لأحد أن يخبرني؟
  • *.o الملفات - أفترض أن هذه هي رمز الكائن
  • *.rss الملفات - لا أعرف غرضهم ، لكنهم بالتأكيد لا علاقة لهم بـ RSS
  • Makefile و 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 الملف عمومًا ملف له سلاسل / محتوى محلي.

alt text
(مصدر: 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 ، فمثلا.

تتمتع معظم أنظمة التحكم في المصادر بدعم جيد لتجاهل الملفات التي تم إنشاؤها ، لأن هذه مشكلة تصل إليها كل مشروع برنامج واحد تقريبًا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top