استخدام Makefile بدلاً من ملفات الحل/المشروع ضمن Visual Studio (2005)

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

  •  09-06-2019
  •  | 
  •  

سؤال

هل لدى أي شخص خبرة في استخدام ملفات التعريف لإنشاءات Visual Studio C++ (تحت VS 2005) بدلاً من استخدام إعداد المشروع/الحل.بالنسبة لنا، الطريقة التي يعمل بها المشروع/الحلول ليست بديهية وتؤدي إلى انفجار التكوين عندما تحاول تعديل الإصدارات باستخدام إشارات زمنية محددة للتجميع.

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

على سبيل المثال، لدينا مشروع يحتاج إلى البناء لثلاث منصات مختلفة.قد يكون لكل نظام أساسي العديد من التكوينات (على سبيل المثال التصحيح والإصدار والعديد من التكوينات الأخرى).أحد أهدافي في المشروع الذي تم تشكيله حديثًا هو الحصول على حل يمكن من خلاله إنشاء جميع الأنظمة الأساسية معًا، مما يجعل إنشاء تغييرات التعليمات البرمجية واختبارها أسهل نظرًا لأنك لن تضطر إلى فتح 3 حلول مختلفة فقط لاختبار التعليمات البرمجية الخاصة بك.لكن الاستوديو المرئي سيتطلب تكوينات 3 * (عدد التكوينات الأساسية).أي.تصحيح أخطاء الكمبيوتر، تصحيح أخطاء X360، تصحيح أخطاء PS3، إلخ.

يبدو أن حل makefile أفضل بكثير هنا.مع بعض الملفات الدفعية أو البرامج النصية الأساسية، سيكون من السهل الحفاظ على استكشاف التكوين عند الحد الأدنى والاحتفاظ فقط بمجموعة صغيرة من الملفات لجميع الإصدارات المختلفة التي يتعين علينا القيام بها.

ومع ذلك، ليس لدي أي خبرة في ملفات makefiles ضمن الاستوديو المرئي وأرغب في معرفة ما إذا كان لدى الآخرين تجارب أو مشكلات يمكنهم مشاركتها.

شكرًا.

(تم تحرير المشاركة للإشارة إلى أن هذه إصدارات C++)

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

المحلول

لقد وجدت بعض الفوائد لإنشاء ملفات مع المشاريع الكبيرة، تتعلق بشكل أساسي بتوحيد موقع إعدادات المشروع.من الأسهل إلى حد ما إدارة قائمة الملفات المصدر، بما في ذلك المسارات وتعريفات المعالج المسبق وما إلى ذلك، إذا كانت جميعها في ملف تكوين أو ملف تكوين بناء آخر.مع التكوينات المتعددة، فإن إضافة مسار التضمين يعني أنك بحاجة إلى التأكد من تحديث كل تكوين يدويًا من خلال خصائص المشروع غير الدقيقة في Visual Studio، والتي يمكن أن تصبح مملة جدًا مع نمو حجم المشروع.

يمكن أن تكون إدارة المشاريع التي تستخدم الكثير من أدوات البناء المخصصة أسهل أيضًا، على سبيل المثال، إذا كنت بحاجة إلى تجميع تظليل البكسل/القمة، أو التعليمات البرمجية بلغات أخرى دون دعم VS الأصلي.

ومع ذلك، ستظل بحاجة إلى تكوينات مختلفة للمشروع، حيث ستحتاج إلى التمييز بين استدعاء أداة الإنشاء لكل تكوين (على سبيل المثال،تمرير خيارات سطر الأوامر المختلفة للقيام بها).

السلبيات الفورية التي تتبادر إلى الذهن:

  • بنيات أبطأ:VS ليس سريعًا بشكل خاص في استدعاء الأدوات الخارجية، أو حتى معرفة ما إذا كان يحتاج إلى إنشاء مشروع في المقام الأول.
  • التبعيات المحرجة بين المشاريع:من الصعب الإعداد بحيث يتسبب التابع في بناء المشروع الأساسي، والأكثر عبثًا التأكد من أنه تم بناؤه بالترتيب الصحيح.لقد حققت بعض النجاح في إقناع أعضاء SC بالقيام بذلك، لكن العمل بشكل جيد يمثل دائمًا تحديًا.
  • فقدان بعض ميزات IDE المفيدة:تحرير ومتابعة كونه الشيء الرئيسي!

باختصار، ستقضي وقتًا أقل في إدارة تكوينات مشروعك، لكنك ستقضي وقتًا أطول في إقناع Visual Studio بالعمل بشكل صحيح معه.

نصائح أخرى

يتم بناء الاستوديو المرئي فوق MSBuild ملفات التكوينات.يمكنك اعتبار ملفات *proj و*sln كملفات إنشاء.أنها تسمح لك بتخصيص عملية البناء بشكل كامل.

على الرغم من أن ذلك ممكن من الناحية الفنية، إلا أنه ليس حلاً سهلاً للغاية داخل Visual Studio.سوف يقاتلك طوال الوقت.

أنصحك بإلقاء نظرة على نانت.إنه نظام بناء قوي للغاية حيث يمكنك القيام بأي شيء تحتاجه بشكل أساسي.

يقوم البرنامج النصي NAnt الخاص بنا بهذا في كل إصدار:

  1. ترحيل قاعدة البيانات إلى الإصدار الأحدث
  2. إنشاء كيانات C# خارج قاعدة البيانات
  3. قم بتجميع كل مشروع في الحل "الرئيسي" الخاص بنا
  4. قم بإجراء جميع اختبارات الوحدة
  5. قم بإجراء جميع اختبارات التكامل

بالإضافة إلى ذلك، يستفيد خادم البناء الخاص بنا من هذا ويضيف مهمة واحدة أخرى، وهي إنشاء وثائق Sandcastle.

إذا كنت لا تحب لغة XML، فيمكنك أيضًا إلقاء نظرة عليها مجرفة (روبي)، خبز/BooBuildSystem (بو)، أو بساكي (باورشيل)

يمكنك استخدام nant لبناء المشاريع بشكل فردي وبالتالي استبدال الحل والحصول على حل ترميز واحد ولا توجد حلول بناء.

هناك شيء واحد يجب أخذه في الاعتبار، وهو أن ملفات الحل وملفات csproj من vs 2005 وما فوق هي نصوص برمجية msbuild.لذا، إذا تعرفت على msbuild، فقد تتمكن من استخدام الملفات الموجودة، لتسهيل عملية النشر، ولجعل النشر أسهل.

لدينا إعداد مماثل لتلك التي تصفها.نحن ندعم ما لا يقل عن 3 منصات مختلفة، لذلك وجدنا أن استخدام CMake لإدارة حلول Visual Studio المختلفة.يمكن أن يكون الإعداد مؤلمًا بعض الشيء، ولكنه يتلخص إلى حد كبير في قراءة المستندات وبعض البرامج التعليمية.يجب أن تكون قادرًا على القيام بكل ما يمكنك فعله تقريبًا من خلال الانتقال إلى خصائص المشاريع والحل.لست متأكدًا مما إذا كان بإمكانك جعل إصدارات الأنظمة الأساسية الثلاثة تعمل معًا في نفس الحل، ولكن يمكنك استخدامها مثبت السرعة للعناية بتصميماتك، وتشغيل البرامج النصية للاختبار كلما دعت الحاجة.

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