Khaled Alshaya

قم ببناء Boost خطوة بخطوة

15 ردود في هذا الموضوع

السلام عليكم ....

سنستعرض سوية كيفية بناء Boost باستخدام Visual Cpp 2008, بناؤها على مترجمات أخرى سهل, و الوثائق الخاصة بها موجهة للمبتدئين نسبياً. لذلك إن كنت تستخدم مترجماً آخر, أدع لك الإطلاع على وثائقها.

في البداية قم بتحميل ملفات المكتبة من على العنوان التالي, قم بتحميل آخر نسخة من المكتبة و هي لحظة كتابة الموضوع 1.39.0 ::

Boost Downloads

ثانياً تأكد من أن الـ Visual Cpp من ضمن الـ path و لمعرفة الطريقة اطلع على الموضوع التالي إن لم يكن كذلك ::

الأعداد العملاقة في ++c بمنتهى السهولة - شرح كامل

بعد أن تقوم بالتحميل قم بفك الضغط عن الملف و إعادة تسمية مجلد المكتبة إلى boost. قم بالدخول إلى هذا المجلد عن طريق سطر الأوامر و اكتب الأمر التالي ::

post-89451-1247007212_thumb.png

ثم قم بكتابة الأمر التالي ::

post-89451-1247006644_thumb.png

الآن انتظر حتى يتم الانتهاء من بناء المكتبة لأنه سيأخذ بعض الوقت. في هذه الوقت سنتحدث عن 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 ثم قم بالوصول إلى التالي كما في الصورة ::

post-89451-1247006668_thumb.png

سوف نخبر VC أنه يجب أن يعامل Boost على أنها مكتبة قياسية...

قم بإضافة مجلد boost الرئيسي,

post-89451-1247006659_thumb.png

ثم قم بإضافة مجلد المكتبات اللازمة لـ boost ::

post-89451-1247006675_thumb.png

و هكذا انتهينا....

قم الآن بإنشاء مشروع جديد, و جرب الكود التالي ::

#include <boost/filesystem.hpp>

int main()
{
boost::filesystem::path newFolder("New Folder");
boost::filesystem::create_directory(newFolder);

return 0;
}

إذا نتج عن تنفيذ الكود مجلد جديد باسم New Folder هذا معناه أننا نجحنا,

أدع المجال لكم الآن.... و إذا كان هناك استفسار حول بناء المكتبة أرجو مشاركته مع الجميع لكي يصبح الموضوع بذرة لمن يريد استخدام المكتبة :)

تحياتي ....

تم تعديل بواسطه Khaled.Alshaya
2

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

السلام عليكم ورحمة الله وبركاته

بارك الله فيك أخى خالد

والله لقد فتحت شهيتنا :) على تلك المكتبه

أكمل على بركة الله :rolleyes:

فى أمان الله

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

وعليكم السلام ورحمة الله وبركاته ...

أولا أشكرك على ماقدمته سائلا المولى ان يجعلها في موازين حسناتك

سؤالي لقد حملت المكتبة وفكيت الضغط ونفذت الأمر bootstrap ثم عندما انفذ الأمر bjam يخبرني بأنه غير متوفر ؟؟؟

مع العلم أني أعمل على minGW.

وتحملني وشكرا لك مرة أخرى ..

تم تعديل بواسطه مصفوفة
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

دائما مبدع و افكارك جميله اخى خالد :)

و الله ولى التوفيق

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

السلام عليكم

أخى الفاضل خالد

قمت بتجربة المكتبه ولكن قابلتنى مشكله فى بناء بعض أجزاءها

وهى المكتبات الآتيه

G:\boost>.\bjam --show-libraries

The following libraries require building:

- date_time

- filesystem

- graph

- iostreams

- math

- mpi

- program_options

- python

- regex

- serialization

- signals

- system

- test

- thread

- wave

وعندما أقوم ببناءها منفرده تظهر لى أخطاء كثيره

وقمت بتجربة المكتبه array ونجحت

علما بأنى استخدم الفيجوال سى++ 6

شكرا لك

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

رائع يا خالد,,

المنتدى بحاجة لمواضيع تتحدث عن هذه المكتبة

بالتوفيق

تم تعديل بواسطه MoHammaD_93
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

السلام عليكم ...

علما بأنى استخدم الفيجوال سى++ 6

أخ أمين, المترجمات القديمة ليست مدعومة :) السبب أنها لا تدعم كثيراً من مقومات الـ metaprogramming. المترجم قديم جداً, و أنصحك باستخدام VC 2008.

و بالمناسبة أيضاً, معظم المكتبات عبارة عن Headers, و المكتبات التي ذكرتها هي التي تحتاج إلى بناء فقط,

و حقيقة لم أجرب أبداً أن أقوم ببناء إحدى تلك المكتبة دون الأخرى, أقوم ببناء المكتبة كلها, و من ثم استخدامها, أعرف أنها تأخذ وقتاً طويلاً في البناء :)

وعليكم السلام ورحمة الله وبركاته ...

أولا أشكرك على ماقدمته سائلا المولى ان يجعلها في موازين حسناتك

سؤالي لقد حملت المكتبة وفكيت الضغط ونفذت الأمر bootstrap ثم عندما انفذ الأمر bjam يخبرني بأنه غير متوفر ؟؟؟

مع العلم أني أعمل على minGW.

أزلت gcc منذ موضوع الأعداد العملاقة, سأحاول تركيبه و من ثم محاولة ترجمة المكتبة عليه :)

و لكن تأكد بأن مجلد bin في gcc من ضمن الـ path ثم حاول مع الموضوع التالي, بينما أجد بعض الوقت الليلة :)

إذا كنت تستخدم mingw مباشرة

Getting Started on Windows

إن كنت لا تعرف ماهي mysys فاذهب مع الرابط الأول :), إذا كنت تستخدم mysys

Getting Started on Unix Variants

لي عودة إن شاء الله...

تحياتي ...

تم تعديل بواسطه Khaled.Alshaya
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

السلام عليكم...

معلومة ممتازة يا خالد بارك الله بيك...و موضوع شيق كمان

يا ترى موجود كتاب بتنصحنا بيه! بنقدر نبدأ معو او بيكون مرجع إلنا للـ Boost...يعني متل اللي عم تقراه انت

:happy:

شاكرة لإهتمامك الكريم

موفق

bye

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

أهلاً أخت رغد :)

هناك عدة كتب و لكنها قديمة نسبياً, اطلعت عليها و لكن لم أتابع القراءة, عموماً التوثيق الخاص boost جميل جداً, و شامل, و كثير من المقالات الكبيرة تتكلم عن boost. معظم ما أقرأه من المقالات.

تحياتي ...

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
أهلاً أخت رغد :)

هناك عدة كتب و لكنها قديمة نسبياً, اطلعت عليها و لكن لم أتابع القراءة, عموماً التوثيق الخاص boost جميل جداً, و شامل, و كثير من المقالات الكبيرة تتكلم عن boost. معظم ما أقرأه من المقالات.

تحياتي ...

آهه شكراً

خلص لكان بجرب التوسيقات تبعتا إن شاء الله

و بتعرف على هالمكتبة ياللي سحرت قلبو لأستاذنا خالد

:happy:

شاكرة لإهتمامك الكريم مرة تانية

موفق

bye

:happy:

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

وعليكــم السـلام ورحمة الله وبركاتـه..

يظهر ان boost قوية جدا ..

وهذه طريقة التنصيب لمن يعمل على لينوكس :wink: :

يوجد طريقتين للتنصيب ، الاولى من خلال ترجمة ال Source code والثانية من خلال تنزيلها كحزمة جاهزة Package من خلال مدير الحزم في توزيعتك ، والاسهل والافضل طبعا هو من خلال مدير الحزم ، وكل ما عليك هو البحث عن boost ثم تنصيبها ، وبعدها لترجمة البرنامج المكتوب في الاعلى نفذ:

g++ -Wall main.cpp -lboost_filesystem -o tst

حيث boost_filesystem هو اسم المكتبة المستخدمة ، وكما ذكر الاخ خالد يوجد بها الكثير من المكتبات الداخلية ، وفي حالة استخدامك لمكتبة اخرى يجب ان تضيف اسمها لكي يتم الربط بها.

وملفات الرأس موجودة على المسار

/usr/include

وهو من أحد مسارات ملفات الهيدر التي يبحث فيها المترجم ، لذلك لن تحتاج الى تحديده أثناء الترجمة.

ومسار المكتبات هو :

/usr/lib/libboost_X

حيث X هي واحدة من المكتبات المتوفرة (filesystem،thread,wave,...etc).

وهو أيضا أحد مسارات المكتبات المعروفة ، لذلك لن تحتاج الى تحديد مكانها فقط عليك ذكر اسم المكتبة التي تريد الربط بها عن طريق الخيار -l

ملاحظة اخيرة : عند ترجمتك للمكتبة من خلال الـ Source code فانك ستحصل على نسختين منها Static and Dynamic اما من خلال مدير الحزم فسيتم تنصيب النسخة Dynamic وهي الانسب تقريبا.

وتشكر أخي خالد على هذه المعلومات ..

الى اللقاء.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

شكراً أخي SudaNix, على توضيح الطريقة في linux :)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

شكراً لك اخي الكريم Khaled.Alshaya و ايضا شكراً لك اخي الكريم SudaNix على هذا الشرح المفصل .

تم اضافة الدرس إلى فهرسة مواضيع الاعضاء المتقدمة .

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

[شكرا أخيSudaNix و أخي خالد

على التوضيح و سؤالي عن لينكس

حيث أني حملت المكتبة عن طريق مدير الحزم كما ذكرت و وجتها كثيرة الخيارات وأخترت

boost C++ Libraries development files (All

فهل هذا هو الخيار الصحيح

و كيف طريقة تنفيذ البرنامج باللينكس عن طريق التيرمنال

تم تعديل بواسطه light stars
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

رائع اخي بكل المقاييس .. نجحت الطريقة والفضل لله سبحانه وتعالى ولك اخي العزيز 

شكرا جزيلا ودوام التوفيق ان شاء الله

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .