السلام عليكم ....
سنستعرض سوية كيفية بناء Boost باستخدام Visual Cpp 2008, بناؤها على مترجمات أخرى سهل, و الوثائق الخاصة بها موجهة للمبتدئين نسبياً. لذلك إن كنت تستخدم مترجماً آخر, أدع لك الإطلاع على وثائقها.
في البداية قم بتحميل ملفات المكتبة من على العنوان التالي, قم بتحميل آخر نسخة من المكتبة و هي لحظة كتابة الموضوع 1.39.0 ::
ثانياً تأكد من أن الـ Visual Cpp من ضمن الـ path و لمعرفة الطريقة اطلع على الموضوع التالي إن لم يكن كذلك ::
الأعداد العملاقة في ++c بمنتهى السهولة - شرح كامل
بعد أن تقوم بالتحميل قم بفك الضغط عن الملف و إعادة تسمية مجلد المكتبة إلى boost. قم بالدخول إلى هذا المجلد عن طريق سطر الأوامر و اكتب الأمر التالي ::
ثم قم بكتابة الأمر التالي ::
الآن انتظر حتى يتم الانتهاء من بناء المكتبة لأنه سيأخذ بعض الوقت. في هذه الوقت سنتحدث عن Boost قليلاً :)
Boost هي عبارة عن مظلة تضم تحتها 95 مكتبة حسب آخر مرة قمت بعد المكتبات. كل ما تحلم به و تتمناه موجود, أرجوك لا تقل لي لا يوجد هناك GUI, في الحقيقية Boost مكتبة لبناء الأنظمة, عندما تفكر في شيء و تريد إنجازه أختر الأدوات المناسبة من Boost و قم بمزجها بسهولة لتحصل على ما تريد, هناك bjam التي لو لاحظت قم باستدعائها من سطر الأوامر, هي أداة في Boost لكي تستطيع كتابة makefile و هذا الـ makefile يتم تحويله لكل مترجم بشكل تلقائي... لا داعي بعد اليوم لكتابة makefile مختلف لكل مترجم. هناك مكتبتان تستهوياني كثيراً, هما قطع فنية في الحقيقة, قصتي مع boost بدأت حينما أخذت مادة عن لغات البرمجة و كيفية بناء إحداها. ما يلفت النظر هو صعوبة كتابة lexer أو parser حتى و لو كانت اللغة بسيطة. المكتبة الأولى التي شدت انتباهي هي المكتبة spirit. يمكنك متابعة الموضوع حولها على الرابط التالي ::
هل تستطيع لغة البرمجة المفضلة لديك أن تفعل ذلك ؟!
طبعاً القصة لم تنتهي هنا.... من المعلومات التي خرجت بها من المادة, أن الـ refactoring tools عبارة أدوات تعمل بعد عمل lexing للكود و لا تتعامل مع الملفات النصية للكود مباشرة. الحقيقة أن الـ preprocessor عبارة عن refactoring tool لا أكثر :) و هو يعمل بعد عمل lexing ,كل ما يقوم به هو تحوير الكود من شكل إلى شكل آخر, سواء كانت القواعد معقدة أم لا فهذا يرجع للأداة نفسها. مرة أخرى, و من نفس مصمم spirit بالمناسبة, مكتبة wave, عبارة عن standard cpp lexer من أرقى التصاميم في عالم البرمجيات, سهل الاستخدام جداً مع قوة مطلقة لبناء ما تريد مع تخصيصه كما تحب :), مصمم المكتبتين شاب كان يعمل في معامل البحوث اليابانية, و لكنه ليس يابانياً كما أعتقد. و لكن بالذات هاتان المكتبتان تستعرضان عضلات ++C بكل وضوح :)
كل ما تكلمنا عنه حتى الآن مكتبتان من أصل 95 مكتبة :), الأولى parser generator و الأخرى cpp lexer. هذه اهتماماتي هذه الأيام لذلك أتكلم عنها هنا :P
عموماً إذا كنت تريد الاستفادة القصوى, أنصحك بتعلم مجموعة الـ smart pointers و الـ regex اللذان سيصبحان ضمن cpp0x في القريب العاجل بالإضافة إلى بعض المكتبات الأخرى.
هناك مكتبة جميلة للـ file system, هل عانيت من إنشاء مجلد, قم بعمل ما تريد و اكتب الكود مرة و سيعمل أينما تريد على أي نظام مدعوم دون تدخل.
هل تريد مكتبات رياضيات ؟
هل تريد مكتبات للتعامل مع المصفوفات الرياضية ؟ uBlas
هل تريد مولدات أعداد عشوائية من الطراز الرفيع ؟
هل تريد data structure و لم تجدها ضمن STL ؟ ما رأيك بأن جميع خوارزميات STL تعمل مع تلك الـ data structure أيضاً ؟
هل ما زلت تتعامل مع دوال التاريخ و الوقت في C حتى الآن ؟؟؟!!!!
هل تريد بناء مكتبات لـ python ؟؟!! بكل سهولة!
هل تريد - و هذه هي المفضلة لدي :) - إضافة ميزات و لمسات جمالية للغة ؟
هل أنت أحد مجانين البرمجة, و تريد تطويع ++C لبناء المستحيل ؟ ما عليك سوى أن تكون "خبيراً" و تستخدم مكتبات الـ metaprogramming في boost لكي تفعل ما تشاء فعلياً.
هل تريد التعامل مع النصوص بطريقة احترافية ؟ الخوارزميات الشائعة للنصوص ؟ إن لم ينفع فعليك بالـ tokenizer ؟ إن لم ينفع عليك بالـ regex ؟ إن لم ينفع فعليك بـ xpressive الذي هو في الحقيقة بين الـ parser و بين الـ regex B) ؟ لم ينفع ؟ عليك إذاً بالمدرعة spirit!!!
لا أعلم عن لغة يمكنها التعامل مع ما أريده على هذا المستوى من "داخل اللغة" نفسها, و ليس عن طريق توليد كود في مكان آخر و قص و لصق و ما شابه!
الكثير و الكثير و الذي لا أدري كيف كنت أستخدم ++C بدونها, عموماً أدع اكتشاف المكتبة لك :)
الآن سنقوم بربط المكتبة مع المترجم لكي تعامل كما تعامل المكتبات القياسية.....
أولاً قم باختيار Tools من القائمة, ثم options ثم قم بالوصول إلى التالي كما في الصورة ::
سوف نخبر VC أنه يجب أن يعامل Boost على أنها مكتبة قياسية...
قم بإضافة مجلد boost الرئيسي,
ثم قم بإضافة مجلد المكتبات اللازمة لـ boost ::
و هكذا انتهينا....
قم الآن بإنشاء مشروع جديد, و جرب الكود التالي ::
#include <boost/filesystem.hpp>
int main()
{
boost::filesystem::path newFolder("New Folder");
boost::filesystem::create_directory(newFolder);
return 0;
}إذا نتج عن تنفيذ الكود مجلد جديد باسم New Folder هذا معناه أننا نجحنا,
أدع المجال لكم الآن.... و إذا كان هناك استفسار حول بناء المكتبة أرجو مشاركته مع الجميع لكي يصبح الموضوع بذرة لمن يريد استخدام المكتبة :)
تحياتي ....



