هل هناك أي أدوات بناء جيدة لمشروع C++، والتي يمكن أن تحل محل الصنع؟

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

  •  09-06-2019
  •  | 
  •  

سؤال

أتساءل عما إذا كانت هناك أي أداة لطيفة وأنيقة لتحل محل GNU Autotools أو Make لبناء مشروع C++ كبير جدًا، وهو أمر معقد جدًا للاستخدام.

من السهل إنشاء جميع الملفات التي تتطلبها شركة de Autotools إذا كان المشروع صغيرًا، ولكن إذا تم تقسيم كود المصدر إلى العديد من الأدلة، مع مكتبات خارجية متعددة والعديد من التبعيات، فستقع في "جحيم Autotools".

شكرا على أي توصيات

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

المحلول

ال محرك جافا سكريبت جوجل V8 هو مكتوب في C++ والاستخدامات سلبيات, ، لذا أعتقد أن هذا صوت واحد لها.

نصائح أخرى

CMake؟(ينشئ ملفات تعريفية، لذا من الناحية الفنية ليس بديلاً في حد ذاته).

لقد رأيت أيضاً "سلبيات"ظهرت في أماكن قليلة مؤخرًا.لم أخلق أي شيء معها بنفسي بالرغم من ذلك.

نلقي نظرة على waf.

أعتقد أنه يمكنك اعتباره بديلاً كاملاً للأدوات اليدوية والصناعية.لأنه يقوم على بيثون.شيء واحد يعجبني في waf هو أن البرنامج النصي waf نفسه مستقل بحوالي 100 كيلو بايت والذي تضعه في الدليل الجذر لمشروعك.هذا على النقيض من صنع أو أشعل النار والأصدقاء، حيث يجب تثبيت نظام البناء أولاً.يجب أن يكون لديك python >=2.3 مثبتًا.

~$ ./waf configure && ./waf && ./waf install

ما يعادل Waf لـ Makefiles هو ملف wscript.إنه نص نصي بيثون يقرأه waf، ويحدد 3 وظائف على الأقل: set_options(), configure(conf) و build(bld).يمكنك تخمين ما يفعله كل منهم.

للبدء، أوصي بالبحث في ملفات العروض التوضيحية/cpp/* في التوزيعة المصدر.ألقِ نظرة أيضًا على المستند /waf.pdf ملف؛إنها وثيقة مكونة من 12 صفحة ستساعدك على البدء بسرعة.

لمقارنة سرعة أدوات بناء C++ المختلفة، يمكنك إلقاء نظرة على هذا المعيار:http://retropaganda.info/~bohan/devel/wonderbuild/benchmarks/time.xml

نحن نستخدم Jam لمشروع C++ معقد - وتتمثل إحدى فوائده في أنه متعدد المنصات بشكل جيد.بدلًا من أن أذكر الفوائد، ما عليك سوى إلقاء نظرة سريعة على هذا الرابط:http://www.perforce.com/jam/jam.html

كتب Noel Llopis بعض المقالات التي تقارن أنظمة البناء.الجزء الأول من "البحث عن نظام البناء المثالي" موجود في http://gamesfromwithin.com/the-quest-for-the-perfect-build-system.يتبع الجزء الثاني على نفس الموقع.تم الإبلاغ عن إعادة محاولة Scons في http://gamesfromwithin.com/?p=104.

الاستنتاجات:Scons بطيئة للغاية ...المربى هو الفائز.

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

http://miller.emu.id.au/pmiller/software/cook/

لقد استخدمت SCons في مشروع كبير بلغة c++ (على نظامي Linux وWindows)، وهو يعمل بشكل جيد حقًا.

scons all -j8 (الذي يجمع ملفات الكائنات بالتوازي) رائع جدًا!

أنا أستعمل bakefile لعملية البناء الخاصة بي وأصبحت معجبًا كبيرًا!

لم أضطر أبدًا إلى كتابة ملف Makefile بنفسي بعد الآن، ناهيك عن البرامج النصية الرهيبة لأدوات GNU التلقائية.كل ما علي فعله هو تقديم XML الملف الذي يصف أهداف البناء.يمكن لـ Bakefile تحويل هذا إلى Makefile الذي يحصل على جميع تبعيات (ملف الرأس) بشكل صحيح وما إلى ذلك، حيث يمكن اختيار تنسيقات Makefile المختلفة (لصق القائمة من الوثائق):

available formats are:
    autoconf      GNU autoconf Makefile.in files
    borland       Borland C/C++ makefiles
    dmars         Digital Mars makefiles
    dmars_smake   Digital Mars makefiles for SMAKE
    gnu           GNU toolchain makefiles (Unix)
    mingw         MinGW makefiles (mingw32-make)
    msevc4prj     MS eMbedded Visual C++ 4 project files
    msvc          MS Visual C++ nmake makefiles
    msvc6prj      MS Visual C++ 6.0 project files
    msvs2003prj   MS Visual Studio 2003 project files
    msvs2005prj   MS Visual Studio 2005 project files
    symbian       Symbian development files
    watcom        OpenWatcom makefiles
    xcode2        Xcode 2.4 project files

عادةً ما أستخدم com.autoconf الخيار، ويكتب لي نصوص GNU autotools النصية المزعجة.كان علي أن أتكيف مع configure.ac البرنامج النصي، بحيث يجد هذا التكوين مكتبة معينة على أي نظام.لكنها لم تكن سيئة للغاية.يعد الحصول على نصوص autoconf بهذه الطريقة أمرًا رائعًا، لأنني لست مضطرًا إلى كتابتها جميعًا بنفسي، وعندما أقوم بتوزيع مشروعي سيبدو كما لو كنت قد كتبتها، ولا يزال بإمكان المستخدمين بناء مشروعي في حدود الله. نظرا للطريقة، مع

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