سؤال

هل هناك طريقة للاستفادة من برنامج التحويل البرمجي لدول مجلس التعاون الخليجي مع الاستمرار في التطوير عبر Visual Studio IDE؟

مشروعنا متعدد المنصات، وكثيرًا ما أواجه مشكلات بسبب مشروعي زميل لأنني أقوم بالتحقق من التعليمات البرمجية غير المتوافقة مع المعايير (يمكن أن يعزى ذلك إلى مترجم VS!).

ما زلت أرغب في أن أكون قادرًا على الترجمة باستخدام مترجم MS، حتى أتمكن من متابعة تصحيح الأخطاء، وما إلى ذلك، ومع ذلك أود أن أكون قادرًا على ذلك يُحوّل للتجميع باستخدام دول مجلس التعاون الخليجي، فقط حتى أتمكن من التأكد من أنني لا أخرق البناء على منصات أخرى.

هل هذا ممكن؟

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

المحلول

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

بمجرد أن تعرف أمر سطر أوامر Windows المحدد الخاص بك لاستدعاء make أو g++ على التعليمات البرمجية الخاصة بك، فإنك تقوم بإنشاء "حدث ما قبل البناء" في مشروع Visual Studio الخاص بك.("خصائص المشروع >> خصائص التكوين >> أحداث البناء >> حدث ما قبل البناء").

يمكن لحدث ما قبل البناء استدعاء برنامج نصي لملف Bat، أو أي برنامج نصي آخر على جهازك، وسيكون هذا البرنامج النصي قادرًا على إرجاع رمز الخطأ.بشكل أساسي، "البرنامج النصي موافق" أو "فشل البرنامج النصي" هو مدى مقدار الاتصال الذي يمكن أن يعود به البرنامج النصي الخاص بك إلى الاستوديو المرئي.

لا يرى البرنامج النصي تلقائيًا جميع متغيرات بيئة الاستوديو المرئي (مثل $(InputDir)، و$(ProjectDir)، و$(SolutionName)، وما إلى ذلك)، ولكن يمكنك استخدام هذه المتغيرات عند تحديد كيفية استدعاء البرنامج النصي.بمعنى آخر، يمكنك تمرير هذه القيم إلى البرنامج النصي كوسائط.

قم بإعداد هذا بحيث في كل مرة تقوم فيها بالإنشاء في Visual Studio، سيحاول حدث ما قبل البناء أولاً تشغيل make/g++ على التعليمات البرمجية الخاصة بك.إذا اكتشف البرنامج النصي الخاص بك (الذي يستدعي make/g++) أي مشكلات، فسيقوم البرنامج النصي بإرجاع خطأ ويمكن إيقاف الإنشاء في ذلك الوقت.يمكن طباعة البرنامج النصي إلى stdout أو stderr ويجب أن يكون هذا الإخراج مرئيًا لك في نافذة إخراج Visual Studio Build (النافذة التي تعرض عادةً أشياء مثل "========== Build:3 نجح، 0 فشل").

يمكنك طباعة البرنامج النصي:

"فشل البناء، تم اكتشاف تعليمات برمجية غير محمولة، قام make/g++ بإرجاع ما يلي:........."

بهذه الطريقة، لن تضطر إلى تذكر التبديل بشكل دوري من Visual Studio إلى سطر الأوامر.سيتم تنفيذ ذلك تلقائيًا لك في كل مرة تقوم فيها بالإنشاء.

نصائح أخرى

هناك بالتأكيد طرق للقيام بذلك - هذه هي الطريقة التي قمنا بتطويرها لجهاز PS3 باستخدام سلسلة أدوات سوني (التي تعتمد على دول مجلس التعاون الخليجي).لا أعرف بالضبط كيف يعمل ذلك، لكنه يتكامل بسلاسة تامة مع VS.

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

هذه الأشياء قد تساعدك في مناقشة ذات صلة حول استخدام VS مع إصدار WRS/VXWorks من أدوات GCC:

لاحظ بشكل خاص البرنامج مرتبط هناك الذي يحول إخراج الخطأ.

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

إذا كان زميلك يعمل على نظام Unix، فمن المحتمل أن يكون لديه نظام إنشاء قائم على العلامة التجارية أو scons أو cmake على أي حال.يمكنك استخدام سيجوين لتثبيت سلسلة أدوات Unix القياسية على Windows، بما في ذلك gcc، وmake، وflex، وbison، وجميع ميزات Unix الأخرى.هناك إصدارات أصلية من scons وcmake، ولكن ستحاول هذه الإصدارات استخدام VS، لذلك لن يساعدك ذلك.لم أحاول تثبيتها من خلال Cygwin لمعرفة ما إذا كان ذلك يجبرهم على دول مجلس التعاون الخليجي، ولكن هذا قد لا يكون ذا صلة بك.

يعد إنشاء نظام تصنيع يستخدم مترجم VS أمرًا ممكنًا ولكنه مؤلم (لقد كنت هناك وفعلت ذلك).وسؤال مختلف.;)

يمكنك بعد ذلك استخدام خطوة بناء خاصة لتشغيل ترجمة gcc من داخل VS.سيكون من الأفضل أن يكون لديك هدف بناء منفصل (مثل Debug وRelease)، ويمكنك إنشاء تلك الأهداف في ملفات المشروع (إنها مجرد ملفات ASCII، تحقق منها)، لكنني لست شخصًا كافيًا لـ VS تعرف مدى سهولة القيام بذلك.سيكون الحفاظ على تحديثه أمرًا مؤلمًا بعض الشيء، وقد ترغب في كتابة برنامج نصي لإنشائه تلقائيًا.

اضطررت إلى الاحتفاظ بملفات تعريفية منفصلة للتجميع مع دول مجلس التعاون الخليجي.هناك تكلفة أولية مرتبطة بالتعلم، ولكنك ستستفيد من المعرفة الوثيقة بالرمز الخاص بك والاختلافات بين VS C++ وgcc.عندما قمت بذلك، كنت أستخدم VC 6، لذلك قد تكون هناك طريقة أفضل الآن باستخدام VS 2005.

جرب Cygwin، طالما قمت بإعداد كافة ملفات Makefiles الخاصة بك بشكل صحيح، يمكنك دائمًا محاولة تجميع كل من VS وGC

يعتمد ذلك على مدى تعقيد ملفات مشروعك:

أنت بالتأكيد بحاجة إلى بيئة دول مجلس التعاون الخليجي مثل cygwin.

  • بالنسبة للمشاريع الصغيرة أو تجميع ملف واحد، يمكنك استخدام أداة إنشاء مخصصة (ملف القواعد)

  • بالنسبة للمشاريع/الحلول الكبيرة، أقوم تلقائيًا بإنشاء ملف تكوين/إنشاء أدوات تلقائية من ملف vcproj/sln وتجميعه داخل IDE.تتم ترجمة الملفات المصدر/أسطر التحذيرات والأخطاء الخاصة بدول مجلس التعاون الخليجي إلى ما يعادلها من IDE (يمكن النقر عليها في نافذة الإخراج).

من المفترض أنك تستخدم makefile بالفعل لإنشاء مشروعك، نظرًا لأنه متعدد المنصات.ما عليك سوى جعل مشروع VS الخاص بك مشروع ملف تعريفي بتكوينات مشروع مختلفة تبدأ ملف التكوين باستخدام معلمات مختلفة للإشارة إلى ما إذا كان الإصدار مخصصًا لـ MSVC أو دول مجلس التعاون الخليجي أم لا.

إذا كان إصدار ملف تعريف MSVC الخاص بك قادرًا على إنشاء ملفات تصحيح الأخطاء (PDB) - وهو ما يجب أن يكون قادرًا على القيام به، فسيعمل VS Debugger بسلاسة أيضًا.

بعد ذلك، يكون البناء باستخدام مجلس التعاون الخليجي داخل Visual Studio أمرًا بسيطًا مثل تحديد القائمة المنسدلة للتكوين "GCC" على شريط الأدوات.

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