Qt4 في Visual Studio 2008 - وزارة المواصلات-ed ملفات الحصول على استثناء من بناء ؟

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

  •  05-07-2019
  •  | 
  •  

سؤال

في الآونة الأخيرة كنت قد قمت بتثبيت مقابل الدين من Qt Software وأنا المستوردة بلدي .برو مشروع VS2008.عموما, كل شيء يعمل بشكل جيد مع واحد صغير ولكن مزعج استثناء.

لنفترض لدي file.cpp مع الدرجة التي يعلن أنه هو Q_OBJECT.إذن على هذا النحو الملف وزارة المواصلات-ed ، moc_file.cpp يتم إنشاء و هو متوفر في الحل تحت عنوان "الملفات التي تم إنشاؤها".حتى الآن جيد جدا.

الشيء المضحك هو عندما أقوم بتغيير شيء في file.cpp (إضافة سطر ، على سبيل المثال) ، و حفظ الملف باستخدام Ctrl+S ، moc_file.cpp يصبح استبعادها من بناء (يمكنك أن ترى أي إدخال علامة على أيقونة).وأنا ضربت الكثير من نموذجية رابط الأخطاء عندما اضغط على F7 لبناء الحل.من أجل إصلاح الوضع ، يجب أن أذهب إلى خصائص moc_file.cpp و التغيير "استبعاد من بناء" من "نعم" إلى "لا".ثم كل شيء يعمل بشكل جيد.

هو شخص آخر تعاني من نفس الشيء ؟ أفعل شيئا خاطئا ؟

هل كانت مفيدة؟

المحلول

ومشكلة حلها. لقد وجدت أن في ملفي .pro اليدوية الحرفية واصفا المشروع الخاص بي، وكان لي MOC_DIR محددة على النحو التالي:

<اقتباس فقرة>   

وMOC_DIR = .moc

وبعد استيراد إلى الدليل Visual Studio ل "الملفات التي تم إنشاؤها" هو نفسه لكل من الإصدار والتصحيح. لذلك، عندما كان بلدي التكوين النشط التصحيح على سبيل المثال، عندما كنت بحفظ ملف أصبح استبعادها من بناء لأنه كان من المعقول لملف المتعلقة الإصدار - مثلما ار بي جي وأندرو المقترحة. بعد تغيير الدليل إلى .moc \ $ (ConfigurationName) لم يعد ينظر إلى المشكلة (وأنا انظر 2 نسخ من كل الملفات التي تم إنشاؤها في حل بي - واحد لكل التكوين).

وشكرا لمساعدة الجميع الخاص بك!

نصائح أخرى

في الواقع، لقد وجدت الحل لهذه "الميزة". لديك لإضافة كل الملفات من GeneratedFiles \ التصحيح وGeneratedFiles \ التصحيح (أو من تكوينات الدلائل الأخرى). سوف كيو تي استبعاد من بناء كل شيء ما لا ينتمي إلى نوع البناء المحدد حاليا.

ونعم، وأنا استخدم أحدث وينظر VS الدين ومشروعي بشكل صحيح كما هو مشروع كيو تي.

هل تعيين التكوين الخاص بك بشكل صحيح ؟

فتح نافذة "تصحيح إعدادات التكوين" مجموعة البنود التالية كما هو مذكور أدناه:

  • "بناء سطر الأوامر" qmake -مشروع & qmake & nmake التصحيح
  • "تنظيف الأوامر" nmake تصحيح نظيفة
  • "بناء سطر الأوامر" qmake & nmake التصحيح

كرر نفس الشيء مع الإفراج عن التكوين

لقد رأيت استبعادها من بناء السلوك في VS2008 (مقابل 2003 أيضا), ولكن المشروع يبني بشكل صحيح.عند تغيير moc'able الملف, Qt سوف تضطر إلى إعادة وزارة التجارة رائد الملف لأنه خارج التاريخ.

وأظن أن Qt خوارزمية هو شيء من هذا القبيل:

  • كشف أن الملف تم تغيير
  • مجموعة القديمة moc الملف كما تستبعد من بناء
  • إضافة ملف جديد إلى المشروع مع نفس الاسم وإدراجه في بناء

في مقابل 2003 المشروع ، أستطيع أن أرى أن بعض moc_* يتم تضمين ملفات مرتين في المشروع ، إصدار واحد هو استبعاد من بناء و أخرى ليست كذلك.

ويجسد الملف .vsproj باستخدام كماكي قد يحل المشكلة.

لملف كل QObject لديك، والمساعد QT بإنشاء ملف moc_ لكل التكوين البناء (عادة مجرد تصحيح والإصدار). عند تغيير التكوين الحالي ترون علامات لا دخول الانتقال من ملف واحد إلى آخر.
يجب أن لا تتغير الملفات moc_ عند تغيير ملف .cpp. فقط عند تغيير الملفات .H .. كل هذا يقودني إلى شيء أن شيئا ما خطأ حدث مع التكوين الخاص بك وحقا أفضل طريقة لاصلاحها هو إعادة إنشائها مع كماكي باستخدام شيء من هذا القبيل:

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