هل هناك أي أدوات بناء جيدة لمشروع C++، والتي يمكن أن تحل محل الصنع؟
-
09-06-2019 - |
سؤال
أتساءل عما إذا كانت هناك أي أداة لطيفة وأنيقة لتحل محل GNU Autotools أو Make لبناء مشروع C++ كبير جدًا، وهو أمر معقد جدًا للاستخدام.
من السهل إنشاء جميع الملفات التي تتطلبها شركة de Autotools إذا كان المشروع صغيرًا، ولكن إذا تم تقسيم كود المصدر إلى العديد من الأدلة، مع مكتبات خارجية متعددة والعديد من التبعيات، فستقع في "جحيم Autotools".
شكرا على أي توصيات
المحلول
ال محرك جافا سكريبت جوجل V8 هو مكتوب في C++ والاستخدامات سلبيات, ، لذا أعتقد أن هذا صوت واحد لها.
نصائح أخرى
نلقي نظرة على 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 هي أداة أخرى يمكن استخدامها لتحل محل الصنع.لقد رأيت العديد من الشركات الكبيرة تستخدمه.لذلك، فهو جاهز للمؤسسات على الرغم من أن موقع الويب يبدو قديمًا إلى حد ما.
لقد استخدمت 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