مشاهده RSS Feed

دست نوشته های من

آموزش کامل و تصویری کامپایل کتابخانه Boost و استفاده از آن در ویندوز (Visual Studio و CodeBlocks)

امتیاز ها: 4 رای ها, 5.00 متوسط.
توسط در تاریخ 8th April 2012 در ساعت 03:32 AM (5103 بازدیدها)
نقل قول نوشته اصلی توسط Master نمایش پست ها
بسم الله الرحمن الرحیم
خب امروز میخوام نحوه کامپایل و استفاده از کتابخانه بسیار قدرتمند Boost رو آموزش بدم .
این آموزش برای اولین بار در کشور هست که بصورت فارسی ارائه میشه و صد البته آموزش انگلیسی درست و درمونی هم براش موجود نیست .(خصوصا برای CodeBlocks)

خب قبل از آموزش یک سری توضیحاتی در مورد این کتابخونه بدم . :
Boost یکی از قویترین کتابخانه های Cross-Platform سی ++ هست . و خیلی از بخشهای این کتابخانه در استاندارد جدید زبان سی++ یعنی (C++11) قرار داده شده .
تعدادی از برنامه نویسان این کتابخونه هم از افراد حاضر در کمیته استاندارد Cpp هستن . و بسیار کتابخونه معتبر و کاربردی ای هست . این کتابخونه شامل کلاسها و توابعی هست که برنامه نوبسی به زبان سی ++ رو بسیار آسونتر و لذت بخش تر میکنه . کدهایی که با استفاده از این کتابخونه مینویسید اصطلاحا platform independent هستند و شما میتونید همون سورس کدی که تو ویندوز با این کلاسها و توابع استاندارد نوشتید رو بدون تغییر در لینوکس مک و ... اجرا کنید .

-------------

کتابخانه Boost به دو صورت در ویندوز ارائه شده :
  1. بصورت سورس کد ( که باید کامپایل بشه )
  2. بصورت کتابخانه از پیش ساخته شده (که توسط یک installer دنلود و نصب میشه رو سیستمون )


استفاده از Installer همیشه مقدور نیست چون به یک اینترنت پر سرعت نیاز دارید تا بتونید حداقل 1 گیگ ( و حداکثر 6 گیگ -تمامی) کتابخانه رو دنلود کنید و پیشفرض هم با ویژوال استودیو کار میکنه ( برای کار کردن با کد بلاکس چند تا قدم اضافی باید طی بشه )
سورس کد اما حجمش کمتره و براحتی میشه دنلود و بعد کامپایلش کرد .

اطلاعات اولیه - نام ها و اصطلاحات:
CodeBlocks:
این یه محیط توسعه بسیار قدرتمند Cross-Platform هست که باهاش میتونید پروژه های مختلفی رو بنویسید . معادل ویژوال استودیو هست اما خوبی ای که داره هم در ویندوز وجود داره و هم در لینوکس و مهمتر اینکه موقع نوشتن و کار کردن با کتابخانه Boost ,این IDE ویژگی فوق العاده Intellisense رو داره که این ویژگی تو ویژوال استودیو وجود نداره.
اینم یه تصویر نمونه از ورژنی که الان روی سیستم من نصبه :


برای دنلود آخرین ورژن این IDE میتونید از اینجا اقدام کنید : Download binary
یادتون باشه ورژنی رو برای دنلود انتخاب کنید که mingw تو اسمش داشته باشه ( ستاپ 74 مگ به بالا رو دنلود کنید )


GCC:
یک مجموعه ابزار اوپن سورس و رایگان که برای کامپایل سورس کد زبانهایی مثل سی و سی++ بکار میره (البته زبانهای دیگه هم هستن که ما کاری نداریم ) . این مجموعه تحت دو نام برای ویندوز پورت شده و قابل دسترس هست . یکی MingW و یکی دیگه Cygwin . که MingW خیلی معروف تره و صد البته اگه CodeBlocks رو دنلود کنید بصورت پیشفرض آخرین ورژن gcc رو هم همراه خودش نصب میکنه و نیازی ندارید جداگانه کامپایلر رو دنلود کنید ) .
GCC برخلاف Microsoft Visual C++ Compiler استانداردهای زبان سی و سی++ رو خیلی بیشتر و سریعتر پشتیبانی میکنه . مثلا پشتیبانی از استاندارد C99 در کامپایلر ویژوال سی++ تنها به چند نمونه محدود میشه در حالی که GCC پشتیبانی 100% داره . همین قضیه در مورد آخرین استاندارد زبان C++که C++11 هست صدق میکنه و پیشتبانی بسیار بیشتری نسبت به همتای مایکروسافتی خودش داره (GCC 4.7.1 به جز بخش تردها تقریبا تمامی قابلیتهای جدید C++11 رو پشتیبانی میکنه در حالی که کامپایلر ویژوال سی++ در آخرین ورژن اون (بتای 2012 ) هنوز به اندازه GCC پشتیبانی نداره )

برای دنلود آخرین ورژن از اینجا اقدام کنید : TDM-GCC

پیش نیازها :
مواردی که در زیر اومده رو دنلود کنید :
آخرین ورژن Boost رو از اینجا دنلود کنید : Boost Downloads
آخرین ورژن GCC رو از اینجا دنلود کنید :TDM-GCC/

Info یادتون باشه قبل از شروع به کامپایل Boost حتما باید ویژوال استودیو نصب باشه - چون boost بصورت پیشفرض سعی میکنه از طریق کامپایلر ویژوال سی++ کدها رو کامپایل کنه .



در حال حاضر آخرین ورژن این کتابخونه ورژن 1.49.0 هست . که من از این لینک دنلود کردم .(ورژن 7zip حجمش از بقیه کمتره و براحتی با Winrar یا خود برنامه 7Zip میتونید فایل رو از حالت فشرده خارج کنید )
بعد از دنلود سورس کد اون رو یک جایی از حالت فشرده خارج کنید . من اون رو تو درایو C اسکترکت کردم . و بعد از extract کردن باید یک پوشه بصورت زیر تو درایو C من وجود داشته باشه :


C:\boost_1_49_0


و وقتی که وارد این پوشه میشید باید پوشه های زیر رو ببینید :



از این بخش به بعد بسته به اینکه داریم از ویژوال استودیو( ویژوال سی++) استفاده میکنیم یا CodeBlocks قدمها کمی فرق داره . پس بسته به کارتون یکی از قدمهای زیر رو طی کنید :

Compiling , Installing and Configuring Boost in Visual Studio

نصب و پیکربندی Boost در ویژوال استودیو بسیار راحت و بدون دردسر هست . و تنها تفاوت های بسیار کوچیکی بین نصب Boost در ورژنهای مختلف ویژوال استودیو هست که در ادامه میبینید.

شروع عملیات Compile کتابخانه Boost :

برای کامپایل کردن باید وارد Command Prompt ویژوال استودیو بشیم . دقت کنید گفتم Command Promt خود ویژوال استودیو نه ویندوز ! برای این کار از مسیر زیر برای اجرا کردن Visual Studio Command Prompt استفاده کنید :
نکته: اگر در ویندوز 7 هستید کافیه در Start Menu تایپ کنید

Visual Studio Command Prompt

در ویندوز Xp و همینطور Windows 7 میتونید از مسیر زیر هم Visual Studio Command Prompt رو اجرا کنید .
Visual Studio 2008:

Start Menu\All Programs\Microsoft Visual Studio 2008\Visual Studio Tools

Visual Studio 2010:

Start Menu\All Programs\Microsoft Visual Studio 2010\Visual Studio Tools

باید به پنجره ای بصورت زیر مواجه بشید


حالا باید وارد پوشه Boost بشیم که قبلا Extract ش کردیم .پس بصورت زیر عمل میکنیم :


C:
cd boost_1_49_0


خب حالا وقت اون رسیده که عمل کامپایل رو انجام بدیم .برای این کار دستورات زیر رو وارد میکنیم :


Visual Studio 2008:

bootstrap.bat
bjam toolset=msvc-9 --build-type=complete stage variant=debug,release threading=multi link=static


Visual Studio 2010:


bootstrap.bat
bjam toolset=msvc-10.0 --build-type=complete stage variant=debug,release threading=multi link=static


خب حالا میتونید برید بیرون قدم بزنید یا اگه خواستید چند تا فیلم ببینید چون این مرحله حداقل یک ساعت طول میکشه تا کامپایل تمام کتابخانه انجام بشه . البته این زمان نسبی هست و بر اساس سرعت سیستم شما متغییره ممکنه بیشتر و ممکنه کمتر باشه ( برای من کمی بیشتر از 1 ساعت طول کشید)

تصاویر زیر هم مراحل انجام کار رو نشون میده ( من از ویژوال استودیو 2010 استفاده میکنم پس کد دوم رو وارد کردم . مابقی اطلاعات در تصاویر نباید با چیزی که شما در سیستم خودتون دارید تفاوتی داشته باشه :



و اینجا هم نشون دهنده شروع عملیان کامپایل هست :



و این هم پایان عملیان کامپایل :


بعد از اینکه عملیات کامپایل تموم شد تنها یک کار باقی میمونه و اون پیکربندی ویژوال استودیو برای استفاده از کتابخانه Boost هست . این پیکربندی در ویژوال استودیو 2008 با ویژوال استودیو 2010 کمی متفاوت هست .


Visual Studio 2008
ویژوال استودیو رو اجرا کنید و وارد بخش Option اون بشید . برای این کار از مسیر زیر استفاده کنید .

Tool\Options


در پنجره باز شده بر روی Projects and Solutions و سپس VC++ Directories کلیک کنید . سمت راست زیر Show directories for: گزینه Include files رو انتخاب کنید و بعد زیرش روی تصویر پوشه کلیک کنید .
حالا باید پوشه ای که Boost رو قبلا توش extract کردیم انتخاب کنیم . (یعنی همون پوشه C:\boost_1_49_0 ) - تذکر : ( چون من تو ویندوز XP این عکس رو گرفتم و اونجا Boost رو تو درایو f اکسترکت کردم پس تو تصویر زیر آدرس f رو دادم .شما باید همون آدرسی که Boost رو اکسترکت کردید بدید ) .



بعد از این کار دوباره از بخش Show directories for: گزینه Library files رو انتخاب کنید و دوباره روی تصویر پوشه کلیک کنید و پوشه stage\lib رو از داخل پوشه ای که Boost رو اونجا Extract کردید انتخاب کنید . یعنی مسیری که وارد میکنید اینطور باید باشه :



C:\boost_1_49_0\stage\lib 


(دوباره تکرار میکنم چون در ویندوز XP من Boost رو در درایو F خودم Extract کردم تو تصویر هم اون آدرس رو دادم . شما باید آدرس رو بر اساس پوشه Boost خودتون بدید )


Ok کنید و تمام . از حالا شما میتونید ازکتابخانه Boost در تمام پروژه های C++ تون استفاده کنید
برای تست اینکه همه چیز بخوبی کار میکنه میتونید ا زمثالی که در بخش زیر اومده استفاده کنید .


Visual Studio 2010
برای ویژوال استودیو 2010 هم همون قدمها باید طی بشه . منتها مکان VC++ Directories که ما بهش نیاز داریم عوض شده و دیگه تو Options نیست . و اگه ما بخوایم به همون مسیری که تو ویژوال استودیو 2008 رفتیم اینجا هم بریم مثل عکس زیر با پیام زیر مواجه میشیم که اگه روی علامت سوال بالای پنجره کلیک کنید مسیر جدید VC++ رو بما میگه.



خب . یک پروژه جدید بسازید . برای این کار از بخش منو New Project رو انتخاب کنید و تو پنجره باز شده مثل تصویر زیر از بخش Visual C++( اگه پیدا نکردید بخش Other Languges رو ببینید زیر اون باید باشه ) Win32 Console Application رو انتخاب کنید و در بخش نام پروژه یک اسم مثل : Boost Example وارد کنید و بعد Ok رو بزنید.





Next رو بزنید و در پنجره جدید تیک Empty Prject رو بزنید و بعد روی Finish کلیک کنید .



خب . حالا از منوی View\Other windows و بعد Property Manager رو انتخاب کنید :



بعد از این کار با پنجره مربوط به Property Manager مواجه میشیم که از دو بخش Debug و Release تشکیل شده . روی هر کدوم کلیک کنیم یک سری زیر منو باز میشه . ما با گزینه اول یعنی Microsoft Cpp Win32 user کار داریم . پس روی همون بخش Debug کلیک کرده تا منوهاش نمایش داده بشه و بعد روی گزینه اول دابل کلیک میکنیم .



حالا در پنجره ای که باز شد دنبال VC++ Directories بگردید و مثل تصویر زیر و همونطوری که قبلا عینا برای Visual STudio 2008 انجام دادیم اینجا هم انجام میدیم .
یعنی با کلیک روی Include files مسیر پوشه ای که Boost رو اکسترکت کردیم میدیم


و با کلیک روی Library files مسیر پوشه stage\lib داخل پوشه Boost رو میدیم .



حالا میخوایم یک سورس کد به این پروژه خالی اضافه کنیم . برای این کار روی نام پروژتون راست کلیک کنید .Add رو انتخاب کنید و بعد New Item رو انتخاب کنید . تو پنجره جدید یک فایل .cpp رو انتخاب کنید و تو بخش نام بنویسید main و بعد Ok کنید. حالا سورس کد زیر رو تو پروژتون کپی پیست کنید . :


/* In the name of GOD
// Boost Example - Demonstrating Boost::Thread
// Author: Seyyed Hossein Hasan Pour
// WebSite: USTMB.IR
/
*/
#include <boost/thread.hpp>
#include <iostream>
#include <cstdlib>

void wait(int seconds)
{
boost::this_thread::sleep(boost::posix_time::seconds(seconds));
}

boost::mutex mutex;

void thread()
{
for (int i = 0; i < 5; ++i)
{
wait(1);
mutex.lock();
std::cout << "Thread " << boost::this_thread::get_id() << ": " << i << std::endl;
mutex.unlock();
}
}

int main()
{
boost::thread t1(thread);
boost::thread t2(thread);

t1.join();
t2.join();

std::system("pause");
}




حالا برنامه رو کامپایل و اجرا کنید . اگر تمامی قدمها رو درست طی کرده باشید باید برنامه براحتی کامپایل و ران بشه . سورس کد بالا یه نمونه ساده از کار با تردها در سی++ هست . یک تابع داریم که کارش فقط شمردن 1 تا 5 هست و ما دوتا ترد ساختیم که در دو ترد با هم شروع به شمارش میکنن .


CodeBlocks
خب قبل از اینکه همین کارها رو برای CodeBlocks انجام بدیم لازمه یک قدم اضافه براداریم . این قدم هم اضافه کردن متغییر PATH به Enviroment Variables هست .
برای این کار روی آیکون MyComputer راست کلیک کنید و Properties رو انتخاب کنید .




Win7 : سمت چپ پنجره باز شده روی Advanced system settings کلیک کنید و در انتهای پنجره باز شده روی دکمه Enviroment Variables کلیک کنید .
WinXP : روی تب Advanced کلیک کنید و بعد در انتهای پنجره باز شده روی دکمه Enviroment Variables کلیک کنید.



در پنجره جدید در بخش بالایی اون روی دکمه NEW کلیک کنید و جلوی variable name بنویسید : PATH و زیرش هم آدرس پوشه MingW رو بدید . مثل شکل زیر:






این مسیر از کجا اومد؟



بعد از اینکه همه چیز اکی بود ادامه میدیم :
Command Prompt رو اجرا کنید . (Start menu\All Programs\Accessories\Command Prompt) یا توی run بزنید CMD
اگه تو ویندوز 7 هستید کافیه روی منوی start کلیک کنید و cmd رو تایپ کنید . .
حالا وارد پوشه ای میشیم که تازه Extract ش کردیم . برای این کار از این دستورات استفاده میکنیم :
نکته : میتونید وقتی که دارید تو CMD میکنید بجای اینکه همه اسم یک فایل یا یک پوشه رو خودتون تایپ کنید از کلید Tab روی کیبرد استفاده کنید وقتی tab رو بزنید ویندوز خودش بترتیب اسم فایلها رو براتون کامل میکنه و با زدن هر Tab فایل و یا پوشه بعدی رو مینویسه براتون (اگه اسمی رو نصفه تایپ کرده باشین با زدن tab ویندز اسمش رو کامل میکنه ).(ویژگی خوبیه نه )
حالا دستورات :

cd ..\..
cd boost_1_49_0

خب حالا وقت اون رسیده که عمل کامپایل رو انجام بدیم .

bootstrap.bat
bjam toolset=gcc --build-type=complete stage variant=debug,release threading=multi link=static


خب همونطور که در بالا اشاره شد ( مراحل گفته شده در ابتدای بخش ویژوال استودیو) اگه همه چیز درست انجام گرفته باشه عملیات کامپایل شروع میشه و نهایتا بعد از چند ساعت کامپایل تموم میشه . و میرسیم به بخش پیکربندی کد بلاکس برای کار با Boost .
برای این کار CodeBlocks رو اجرا کنید .
از منو Settings گزینه Compiler and debugger settings رو انتخاب کنید .

در پنجره باز شده از بین Tab های موجود ,تب Search Directories رو انتخاب کنید . و در پنجره ای که نمایش داده مییشه . در بخش Compiler دکمه Add رو بزنید و پوشه ای که سورس کد های Boost رو اکسترکت کردید انتخاب کنید .




بعد از این کار بر روی تب کناری اون یعنی تب Linker کلیک کنید و باز با زدن بر روی دکمه Add پوشه stage\lib داخل پوشه اکسترکت شده Boost رو همونطور که در تصویر میبینید انتخاب کنید :




بعد از انجام این کارها بر روی تب Linker Settings کلیک کنید ( قبل از تب Search directories هست ) و بر روی دکمه Add کلیک کنید و برید به پوشه stage\lib داخل پوشه Boost که قبلا اسکترکتش کردید . برای من این آدرس هست :


C:\boost_1_49_0\stage\lib


و بعد تمامی فایلهایی که تو این پوشه هست رو انتخاب کنید (Ctrl-A رو بزنید ) بعد روی Open کلیک کنید و نهایتا OK کنید و Ok کنید تا از پنجره مربوط به تنظیمات کامپایلر خارج بشید .
حالا سعی میکنیم تا سورس کد قبلی رو اینجا هم کامپایل کنیم .

یک پروژه جدید در CodeBlocks از نوع Console Application انتخاب و کلید Next رو بزنید .زبان C++ رو انتخاب کنید و همینطور ادامه بدید تا پروژه ساخته بشه . بر روی سورس کد کلیک کنید و سورس کد موجود رو با سورس کدی که در زیر هست عوض کنید .


//in the name of GOD
#define BOOST_THREAD_USE_LIB
#include <boost/thread.hpp>
#include <iostream>

void wait(int seconds)
{
boost::this_thread::sleep(boost::posix_time::seconds(seconds));
}

boost::mutex mutex;

void thread()
{
for (int i = 0; i < 5; ++i)
{
wait(1);
mutex.lock();
std::cout << "Thread " << boost::this_thread::get_id() << ": " << i << std::endl;
mutex.unlock();
}
}

int main()
{
boost::thread t1(thread);
boost::thread t2(thread);

t1.join();
t2.join();
}


و حالا کامپایل کنید . اگر همه کارها رو بدرستی انجام داده باشید باید برنامه بدون نقص کامپایل و اجرا بشه.

کار با تردها در CodeBlocks یک نکته ای داره و اون هم اینکه شما باید ابتدای تمامی پروژه هایی که درش قصددارید از ترد استفاده کنید عبارت زیر رو define کنید .:

#define BOOST_THREAD_USE_LIB


همونطور که قبلا دیدین این کار زمانی که با ویژوال استودی ضروری نبود . اما اینجا بخاطر یه باگ ما مجبور به این کار هستیم . برای استفاده از بقیه کلاسها و توابع موجود در کتابخانه Boost نیاز به انجام این کار نیست . فقط این کار زمانی نیاز هست که شما بخوایید از کلاسهای مربوط به تردها تو پروژتون استفاده کنید .

امیدوارم این آموزش مورد پسند همه شما قرار گرفته باشه و بتونید به نحو احسنت ازش استفاده کنید .
اگر جایی سوالی داشتید یا به مشکلی برخوردید میتونید تو همین تاپیک بپرسید یا به پیام خصوصی بدید . (البته من تا دو سه ماه آینده بعلت سربازی نیستم اما بعدش در خدمتم انشاالله ) .

میتونید این آموزش رو در جاهای دیگه استفاده کنید فقط در صورتی که کپی رایت رو رعایت کنید و لینک به این صفحه بصورت مستقیم داده باشید . من بیشتر از 5 ساعت تمام وقت گذاشتم تا این آموزش رو بنویسم .

برای سلامتی خودتون و من و خانواده و رفتگانمون یه فاتحه بفرستید و یا دعای خیر کنید
در پناه حق
سید حسین حسن پور متی کلایی
1:42 شب (صبح؟) 8 آوریل 2012
Mehdi, Farzad, F.Farzanegan و 1 نفر دیگر این نویسه را می پسندند.

Submit "آموزش  کامل و تصویری کامپایل  کتابخانه Boost  و استفاده از آن در ویندوز (Visual Studio و CodeBlocks)" to Facebook Submit "آموزش  کامل و تصویری کامپایل  کتابخانه Boost  و استفاده از آن در ویندوز (Visual Studio و CodeBlocks)" to Digg Submit "آموزش  کامل و تصویری کامپایل  کتابخانه Boost  و استفاده از آن در ویندوز (Visual Studio و CodeBlocks)" to del.icio.us Submit "آموزش  کامل و تصویری کامپایل  کتابخانه Boost  و استفاده از آن در ویندوز (Visual Studio و CodeBlocks)" to StumbleUpon Submit "آموزش  کامل و تصویری کامپایل  کتابخانه Boost  و استفاده از آن در ویندوز (Visual Studio و CodeBlocks)" to Google

نظرات



Powered by vBulletin
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.6.0
Persian Language By Ustmb.ir
این انجمن کاملا مستقل بوده و هیچ ارتباطی با دانشگاه علوم و فنون مازندران و مسئولان آن ندارد..این انجمن و تمامی محتوای تولید شده در آن توسط دانشجویان فعلی و فارغ التحصیل ادوار گذشته این دانشگاه برای استفاده دانشجویان جدید این دانشگاه و جامعه دانشگاهی کشور فراهم شده است.لطفا برای اطلاعات بیشتر در رابطه با ماهیت انجمن با مدیریت انجمن ارتباط برقرار کنید
ساعت 07:48 AM بر حسب GMT +4 می باشد.